jQuery ajax全局函数处理session过期后的ajax跳转问题


Posted in Javascript onJune 03, 2016

做web常常需要考虑session过期的问题,session过期就让页面跳转到登录界面去,但是存在这样一个问题,当页面过期后,用户请求后台的方式有两种:传统方式和异步请求方式,传统方式倒好解决,请求到后台,拦截到过期的操作,直接跳转,但是异步请求不会刷新整个页面,因此对session过期的处理也不能按往常的方式,需要另外的操作。

具体思路:拦截器中判断是否为ajax请求 —— 是ajax请求则返回一个消息 ——页面添加一个全局的ajax处理事件,对消息进行判断,如果是报告session过期,则location到登录页面

第一步,拦截器判断是否为ajax请求:

if(request.getHeader("x-requested-with")!=null 
&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ 
//是ajax请求,则返回个消息给前台
PrintWriter printWriter = response.getWriter(); 
printWriter.print("{sessionState:timeout}"); 
printWriter.flush(); 
printWriter.close(); 
}else{ 
//不是ajax请求,则直接跳转页面
}

第二步,设置全局ajax处理事件,处理session过期的问题,类似于一个拦截器或者过滤器:

$.ajaxSetup({ 
contentType:"application/x-www-form-urlencoded;charset=utf-8", 
cache:false , 
complete:function(data,TS){ 
//对返回的数据data做判断,
//session过期的话,就location到一个页面
} 
} 
});

这是一个基于jQuery的异步处理机制,完整代码我没写,上次在公司写的代码,带不出来,文章里的代码有些还是在网上找来粘进去的,凌晨都过了半小时了,太困了,记录下思路而已。

PS:ajax 操作全局监测,用户session失效

jQuery(function ($) {
// 备份jquery的ajax方法 
var _ajax = $.ajax;
// 重写ajax方法,先判断登录在执行success函数 
$.ajax = function (opt) {
var _success = opt && opt.success || function (a, b) { };
var _opt = $.extend(opt, {
success: function (data, textStatus) {
try {
if (data.sessionstatus == false) {
//用户失效进行操作
//return;
} 
} catch (e) {
}
_success(data, textStatus);
}
});
_ajax(_opt);
};
});
Javascript 相关文章推荐
js取消单选按钮选中示例代码
Nov 14 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
jquery密码强度校验
Dec 02 Javascript
使用jquery提交form表单并自定义action的实现代码
May 25 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
Nov 29 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
关于AngularJS中几种Providers的区别总结
May 17 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 #Javascript
JS判断字符串变量是否含有某个字串的实现方法
Jun 03 #Javascript
JavaScript闭包实例详解
Jun 03 #Javascript
js判断某个字符出现的次数的简单实例
Jun 03 #Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 #Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
Jun 03 #Javascript
javascript闭包概念简单解析(推荐)
Jun 03 #Javascript
You might like
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
如何写好建议书
2014/03/13 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
奠基仪式主持词
2014/03/20 职场文书
英文演讲稿开场白
2014/08/25 职场文书
远程培训的心得体会
2014/09/01 职场文书
刑事法律意见书
2015/06/04 职场文书
老人与海读书笔记
2015/06/26 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python