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 相关文章推荐
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
jquery之别踩白块游戏的简单实现
Jul 25 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 Javascript
vue安装遇到的5个报错及解决方法
Jun 12 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
JavaScript实现动态留言板
Mar 16 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php如何连接sql server
2015/10/16 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
2014年师德师风学习材料
2014/05/16 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
python库sklearn常用操作
2021/08/23 Python
Python制作表白爱心合集
2022/01/22 Python