This article mainly introduces in detail the solution to the problem of user session failure when using Ajax. It has certain reference and value for learning ajax. Friends who are interested in ajax can refer to it
When using the spingMVC interceptor to handle the problem of user session failure, when the user session fails, a string of javascript strings will be returned to force the user's browser to jump to the login page. However, when Ajax is used to request data, only a string will be responded after the verification fails, and JavaScript will not be executed. This is because the Ajax request is initiated by the XMLHTTPRequest object rather than the browser. After the verification fails, the server returns The information will be received by the XMLHTTPRequest object and saved in the js object.
In order to deal with this situation, Http requests can be judged in the background first, and Ajax requests can be processed separately from ordinary http requests.
Observing the request header information sent by Ajax, we can find that the header information of the Ajax request will contain X-Requested-With:XMLHttpRequest. Through this, we can determine whether it is an Ajax request.
String requestType = request.getHeader("X-Requested-With"); if(requestType != null && "XMLHttpRequest".equalsIgnoreCase(requestType.trim())) { //如果是ajax请求 response.setHeader("sessionStatus", "timeout"); response.sendError(601, "session timeout."); return false; }
javascript code, you can set the global default options for Ajax requests, once and for all
//设置Ajax请求的全局默认options jQuery.ajaxSetup({ type:'post', complete:function(xhr, ts){ //XMLHttpRequest, textStatus var sessionStatus = xhr.getResponseHeader('sessionstatus'); if(sessionStatus == 'timeout') { alert('页面过期,请重新登录!'); window.top.location.href = 'Login.htm'; } } });
DataTables is also used in the project to make data tables. It is found that the above javascript configuration method does not take effect in datatables. For error information, see: http://datatables.net/tn/7 You must configure the error attribute of ajax
$('#example').dataTable( { "ajax": { "url": "findRoles.htm", "type": "POST", "error": function(xhr, ts, et) { //XMLHttpRequest, textStatus, errorThrown var sessionStatus = xhr.getResponseHeader('sessionstatus'); if(sessionStatus == 'timeout') { alert('页面过期,请重新登录!'); window.top.location.href = 'Login.htm'; } } } });
The above is the entire content of this article. I hope it will be helpful to everyone's learning, and I also hope that everyone will support the PHP Chinese website.
Related recommendations:
A brief analysis of the problem of json data transmitted from Ajax background success
Ajax form submission and file upload example code
The above is the detailed content of Solution to the problem of user session failure when using Ajax. For more information, please follow other related articles on the PHP Chinese website!