ITPub博客

首页 > 应用开发 > Javascript > Ajax请求,登录超时,如何跳转到登录页面

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

原创 Javascript 作者:mjsws 时间:2018-04-30 21:33:14 0 删除 编辑

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

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

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


一、请求页面修改

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

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

[javascript] view plain copy
  1. $.ajaxSetup({    
  2.     statusCode: {    
  3.         999: function (data) {    
  4.             alert("登录超时");  
  5.             window.open ('http://www.267774.com/login.html','_top');  
  6.         }    
  7.     }    
  8. })  
由于是基于jQuery框架的,所以页面引用login-timeout.js文件的时候,一定要放在引入jQuery后面。

[html] view plain copy
  1. <script type="text/javascript" src="/js/jquery-1.8.0.min.js"></script>  
  2. <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请求相关跳转登录统一处理:

[java] view plain copy
  1. try {  
  2.     res.setStatus(<span style="color:#FF0000;">999);//ajax请求可以和普通请求一并处理,ajax请求会提前拦截  
  3.     res.setContentType("text/html");  
  4.     res.setCharacterEncoding("UTF-8");  
  5.     PrintWriter out = res.getWriter();  
  6.     out.println("<html>");  
  7.     out.println("<script>");  
  8.     out.println("alert(\"登录超时\");");  
  9.     out.println("window.open ('" + domainName + "/login.html','_top')");  
  10.     out.println("</script>");  
  11.     out.println("</html>");  
  12.   
  13. } catch (Exception e) {  
  14.     log.err("出现异常:", e);  
  15. }  

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31512205/viewspace-2153572/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2017-12-17

  • 博文量
    6
  • 访问量
    7767