博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
阅读量:5297 次
发布时间:2019-06-14

本文共 1163 字,大约阅读时间需要 3 分钟。

目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题。
可能需要处理的问题:Session超时、系统500错误、普通的业务错误、权限不足。
同步请求
 
           Session超时,登录拦截器,重定向到登录页面。
           500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示。 
            业务错误和权限不足,与500类似。
            相对而言,同步方式,处理起来还是比较容易的。
异步请求: 
        2种方式
1.后端登录拦截器,发现Session超时,给个标记。
   后端系统错误捕捉,给个标记。
  比如:
  
if (CommonUtil.isAjaxRequest(request)) {			response.setHeader(BERROR, "yes");               CommonUtil.jsonError(response);             return null;		}
  前端
  
2. 封装jquery的post方法。
  
function post(url, params, fn) {	$.post(url, params, function(data) {        if(data.code==-1){        	alert("Session time out");        	return;        }        if(data.code==-5){        	alert("System error.");        	return;        }        if(data.code ==0){        	alert("出了点小问题,"+data.msg);        	return;        }        if(data.code == -2){        	alert("权限不足,请联系网站管理员.");        	return;        }        fn(data);	});}
   调用方式:
  
post(base + "/home/bankcard/doadd.json", {			"bank" : bank,			"card" : card		}, function(data) { }
参考资料: 、某前端王的建议
补充几点

1.后端拦截器加标记。
   好处是:前端用ajaxSetup,前端没有干扰到任何已有的代码。比如原来$.post不用修改。
   坏处是:后端要改。
2.前端统一封装post,正好反过来。 
   前端需要修改已有的代码。 
   后端不需要修改。 

转载于:https://www.cnblogs.com/qitian1/p/6462809.html

你可能感兴趣的文章
ajax VS websocket
查看>>
Android ViewPager 动画效果
查看>>
Android ijkplayer详解使用教程
查看>>
Android UI-仿微信底部导航栏布局
查看>>
Android中pendingIntent的深入理解
查看>>
Android ActionBar
查看>>
Redis集群方案Codis部署手册
查看>>
MySQL 第六天
查看>>
python 笔记一
查看>>
pip和easy_install使用方式
查看>>
数据表与简单java类(一对多的关系)
查看>>
博弈论
查看>>
CSS3 - 如何给图片增加内阴影
查看>>
Redis sentinel & cluster 原理分析
查看>>
OD使用教程3(下) - 调试篇03|解密系列
查看>>
我的工作习惯小结
查看>>
Calendar类
查看>>
把word文档中的所有图片导出
查看>>
Spring 自动装配;方法注入
查看>>
浏览器的判断;
查看>>