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 相关文章推荐
indexOf 和 lastIndexOf 使用示例介绍
Sep 02 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
Jan 12 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
webpack配置打包后图片路径出错的解决
Apr 26 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
Aug 28 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
Apr 07 Javascript
Preload基础使用方法详解
Feb 03 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python 两种方法删除空文件夹
2020/09/29 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
应届中专生自荐书范文
2014/02/13 职场文书
便利店促销方案
2014/02/20 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
个人自我鉴定总结
2014/03/25 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
护士求职信
2014/07/05 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
五好家庭申报材料
2014/12/20 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
鉴史问廉观后感
2015/06/10 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
用Python生成会跳舞的美女
2022/01/18 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android