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的一种模块模式
Mar 22 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
jquery 扑捉回车键事件代码
Apr 24 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
package.json配置文件构成详解
Aug 27 Javascript
layui form表单提交之后重新加载数据表格的方法
Sep 11 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
基于Cesium绘制抛物弧线
Nov 18 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
stripos函数知识点实例分享
2019/02/11 PHP
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python处理按钮消息的实例详解
2017/07/11 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python tqdm库的使用
2020/11/30 Python
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
GWT都有什么特性
2016/12/02 面试题
十八大闭幕感言
2014/01/22 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
导师工作推荐信范文
2014/05/17 职场文书
创文明城市标语
2014/06/16 职场文书
数学教研活动总结
2014/07/02 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
党员证明模板
2015/06/19 职场文书