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 相关文章推荐
extjs grid取到数据而不显示的解决
Dec 29 Javascript
namespace.js Javascript的命名空间库
Oct 11 Javascript
遍历jquery对象的代码分享
Nov 02 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
Vue.js项目模板搭建图文教程
Sep 20 Javascript
vue配置多页面的实现方法
May 22 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 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/06/25 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
js压缩利器
2007/02/20 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
Django框架下在视图中使用模版的方法
2015/07/16 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
简单了解Python生成器是什么
2019/07/02 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
什么是规则表达式
2012/05/03 面试题
组织关系转移介绍信
2014/01/16 职场文书
会计助理岗位职责
2014/02/17 职场文书
装修协议书范本
2014/04/21 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL