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获取页面窗口大小的代码解读
Dec 01 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
Feb 07 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
JS替换字符串中空格方法
Apr 17 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
Dec 18 Javascript
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
vue 集成jTopo 处理方法
Aug 07 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
Feb 11 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
微信小程序基础教程之echart的使用
Jun 01 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 7 vs HHVM 多角度比较
2016/02/14 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
js+css实现打字效果
2020/06/24 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python实现简单的语音识别系统
2017/12/13 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
自荐信封面
2013/12/04 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
机电一体化专业求职信
2014/07/22 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
世界红十字日活动总结
2015/02/10 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
导游词之贵州织金洞
2019/10/12 职场文书