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

来源:互联网 发布:淘宝网运营模式浅谈 编辑:程序博客网 时间:2024/05/17 17:15

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

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

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


一、请求页面修改

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

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

$.ajaxSetup({      statusCode: {          999: function (data) {          alert("登录超时");        window.open ('http://xxx.xxx.com/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);        }


阅读全文
1 0
原创粉丝点击