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动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
详解如何使用Node.js实现热重载页面
May 06 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网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
JS Array对象入门分析
2008/10/30 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python ljust rjust center输出
2008/09/06 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python Cartopy的基础使用详解
2020/11/01 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
工程师岗位职责
2013/11/08 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
西式结婚主持词
2014/03/14 职场文书
银行贷款承诺书
2014/03/29 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
学习普通话的体会
2014/11/07 职场文书
安全温馨提示语大全
2015/07/14 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android