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 利用StringBuffer类提升+=拼接字符串效率
Nov 24 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
jquery实现简单的二级导航下拉菜单效果
Sep 07 Javascript
jQuery实现带渐显效果的人物多级关系图代码
Oct 16 Javascript
全面解析Bootstrap弹窗的实现方法
Dec 01 Javascript
基于jQuery Ajax实现上传文件
Mar 24 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
May 17 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 Javascript
Vue Element plus使用方法梳理
Dec 24 Vue.js
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采集相关教程之一 CURL函数库
2010/02/15 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
javascript 函数调用规则
2009/08/26 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Element Rate 评分的使用方法
2020/07/27 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
python中map、any、all函数用法分析
2015/04/21 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
深入学习python多线程与GIL
2019/08/26 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
Python必须了解的35个关键词
2020/07/16 Python
python动态规划算法实例详解
2020/11/22 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
.net软件工程师面试题
2015/03/31 面试题
后勤人员岗位职责
2013/12/17 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
css3 选择器
2022/05/11 HTML / CSS