加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax请求 session过期跳转首页的两种处理方式

发布时间:2020-12-16 03:36:46 所属栏目:百科 来源:网络整理
导读:在处理session过期跳转首页时遇到了一些困难,经过百度发现了大致两种方法,在这里进行一下整理: 1、直接重写jQuery ajax方法: [javascript] view plain copy ( function ($){ //备份jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax= f

在处理session过期跳转首页时遇到了一些困难,经过百度发现了大致两种方法,在这里进行一下整理:


1、直接重写jQuery ajax方法:

[javascript] view plain copy
  1. (function($){
  2. //备份jquery的ajax方法
  3. var_ajax=$.ajax;
  4. //重写jquery的ajax方法
  5. $.ajax=function(opt){
  6. //备份opt中error和success方法
  7. varfn={
  8. error:function(XMLHttpRequest,textStatus,errorThrown){},
  9. success:function(data,textStatus){
  10. alert(textStatus);
  11. //在这里进行跳转
  12. }
  13. }
  14. if(opt.error){
  15. fn.error=opt.error;
  16. }
  17. if(opt.success){
  18. fn.success=opt.success;
  19. }
  20. //扩展增强处理
  21. var_opt=$.extend(opt,{
  22. error:function(XMLHttpRequest,errorThrown){
  23. //错误方法增强处理
  24. fn.error(XMLHttpRequest,errorThrown);
  25. },
  26. success:function(data,textStatus){
  27. //成功回调方法增强处理
  28. fn.success(data,textStatus);
  29. }
  30. });
  31. _ajax(_opt);
  32. };
  33. })(jQuery);

这种方法与jquery.min.js库有冲突,使用时一定要注意!


2、基于 ajaxSetup来进行控制:

在登录的过滤器或者拦截器中添加一下代码:

[java] view plain copy
  1. if("XMLHttpRequest".equals(((HttpServletRequest)request).getHeader("X-Requested-With"))){
  2. ((HttpServletResponse)response).setHeader("sessionstatus","timeout");
  3. ((HttpServletResponse)response).setHeader("redirectUrl",((HttpServletRequest)request).getContextPath()+"/login.jsp");
  4. }else{
  5. ((HttpServletResponse)response).sendRedirect(path2);
  6. }
  7. //如果session为空表示用户没有登录就重定向到login.jsp页面
  8. return;


js中添加:

[javascript] view plain copy
  1. //全局的AJAX访问,处理AJAX清求时SESSION超时
  2. if(typeof($)!="undefined"){
  3. $.ajaxSetup({
  4. contentType:"application/x-www-form-urlencoded;charset=utf-8",
  5. complete:function(XMLHttpRequest,textStatus){
  6. //通过XMLHttpRequest取得响应头,sessionstatus
  7. varsessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");
  8. if(sessionstatus=="timeout"){
  9. //这里怎么处理在你,这里跳转的登录页面
  10. window.location.replace(XMLHttpRequest.getResponseHeader("redirectUrl"));
  11. }
  12. }
  13. });
  14. }

jquery不推荐使用ajaxSetup容易影响其他插件ajax发生冲突,以上两种方式在使用过程中一定要谨慎!


转自:http://blog.csdn.net/qq741437836/article/details/52587816

http://www.aspzz.cn/article/85796.htm

http://www.aspzz.cn/article/60202.htm

http://www.cnblogs.com/web-easy/p/5056653.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读