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 相关文章推荐
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
vue-router单页面路由
Jun 17 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
实例详解Node.js 函数
Jun 10 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
详解js静态检查工具eslint配置文件
Nov 23 Javascript
javascript使用正则表达式实现注册登入校验
Sep 23 Javascript
JavaScript嵌入百度地图API的最详细方法
Apr 16 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
20个PHP常用类库小结
2011/09/11 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python开发中range()函数用法实例分析
2015/11/12 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python怎么提高计算速度
2020/06/11 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
副总经理任命书
2014/06/05 职场文书
培训督导岗位职责
2015/04/10 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python