700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Ajax请求 登录超时 如何跳转到登录页面

Ajax请求 登录超时 如何跳转到登录页面

时间:2023-02-09 10:51:54

相关推荐

Ajax请求 登录超时 如何跳转到登录页面

对于普通的http请求,请求服务器,session超时的情况下,页面会自动跳转到登录页面。

但是对于Ajax请求,页面还是当前页面,不会跳转到登录页面。

看到网上很多方法,但是都不通用,下面是如何解决这个问题的例子。

一、请求页面修改

本例是基于jQuery框架为基础实现的。

创建一个login-timeout.js文件,拷贝如下代码。

$.ajaxSetup({ statusCode: { 999: function (data) { alert("登录超时");window.open ('/login.html','_top');} } })

由于是基于jQuery框架的,所以页面引用login-timeout.js文件的时候,一定要放在引入jQuery后面。

<script type="text/javascript" src="/js/jquery-1.8.0.min.js"></script><script type="text/javascript" src="/js/login-timeout.js"></script>

这样的话,相当于每个页面都要引入此文件,修改量大,所以可以把此js代码加在jquery-1.8.0.min.js里面。注意要放在最后,不能放在前面,因为是基于jQuery框架为基础的。

二、服务端修改

服务器端判断是否登录超时通常写在过滤器里面。

HttpServletResponse.setStatus(999);

即对于ajax请求返回的状态码设置成999,要和js里面的状态码保持一致,也可以是888、777等等,不要使用已被占有的状态码即可(200、302、404、505等)

【备注】其他http请求相关跳转登录统一处理:

try {res.setStatus(999);//ajax请求可以和普通请求一并处理,ajax请求会提前拦截res.setContentType("text/html");res.setCharacterEncoding("UTF-8");PrintWriter out = res.getWriter();out.println("<html>");out.println("<script>");out.println("alert(\"登录超时\");");out.println("window.open ('" + domainName + "/login.html','_top')");out.println("</script>");out.println("</html>");} catch (Exception e) {log.err("出现异常:", e);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。