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重建星际争霸
Dec 22 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 Javascript
JS实现烟花爆炸效果
Mar 10 Javascript
js异步接口并发数量控制的方法示例
Nov 22 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基础知识回顾
2012/08/16 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
python的launcher用法知识点总结
2020/08/07 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
巾帼文明岗申报材料
2014/05/01 职场文书
计划生育责任书
2015/05/09 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2016年学校招生广告语
2016/01/28 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
导游词之介休绵山
2019/12/31 职场文书
Python进度条的使用
2021/05/17 Python
Python3接口性能测试实例代码
2021/06/20 Python
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android