Home > Web Front-end > JS Tutorial > body text

jQuery ajax global function handles ajax jump problem after session expiration

高洛峰
Release: 2017-01-07 09:39:40
Original
1272 people have browsed it

When doing web work, we often need to consider the issue of session expiration. When the session expires, the page will jump to the login interface. However, there is a problem. When the page expires, there are two ways for users to request the background: traditional method and asynchronous request. The traditional method is easier to solve. The request goes to the background, intercepts the expired operation, and jumps directly. However, the asynchronous request will not refresh the entire page, so the session expiration cannot be handled in the usual way and requires additional operations.

Specific idea: Determine whether it is an ajax request in the interceptor - if it is an ajax request, a message will be returned - the page will add a global ajax processing event to judge the message. If it is reported that the session has expired, then the location Go to the login page

First step, the interceptor determines whether it is an ajax request:

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请求,则直接跳转页面
}
Copy after login

Second step, set the global ajax processing event, Dealing with session expiration is similar to an interceptor or filter:

$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
cache:false ,
complete:function(data,TS){
//对返回的数据data做判断,
//session过期的话,就location到一个页面
}
}
});
Copy after login

This is an asynchronous processing mechanism based on jQuery. I have not written the complete code. I couldn’t bring out the code I wrote at the company last time. Some of the code in the article was found online and pasted in. It was already half an hour in the morning and I was too sleepy. I just recorded my thoughts.

PS: Ajax operation global monitoring, user session invalidation

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);
};
});
Copy after login

For more jQuery ajax global function to handle ajax jump problem after session expiration, please pay attention to PHP Chinese net!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!