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 相关文章推荐
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
javascript中的面向对象
Mar 30 Javascript
JS中offset和匀速动画详解
Feb 06 Javascript
Bootstrap模态对话框中显示动态内容的方法
Aug 10 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
javascript实现简单打字游戏
Oct 29 Javascript
用Javascript实现发送短信验证码间隔功能
Feb 08 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中过滤非法字符的具体实现
2013/10/29 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
python3中property使用方法详解
2019/04/23 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
公司司机岗位职责范本
2014/03/03 职场文书
建筑学专业自荐书
2014/07/09 职场文书
群众路线表态发言材料
2014/10/17 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
python基础之匿名函数详解
2021/04/21 Python
Python入门学习之类的相关知识总结
2021/05/25 Python