您的位置:首页 > 其它

Shiro 处理ajax请求 拦截登录超时---解决!

2017-11-16 11:58 609 查看
  配置全局ajax配置

$.ajaxSetup({
complete:function(XMLHttpRequest,textStatus){
if(textStatus=="parsererror"){
$.messager.alert('提示信息', "登陆超时!请重新登陆!", 'info',function(){
window.location.href = 'login.jsp';
});
} else if(textStatus=="error"){
$.messager.alert('提示信息', "请求超时!请稍后再试!", 'info');
}
}
});

将这段js,放在全局的文件中。例如自己写的js文件 或者其他。。

然后有关一些其他问题:

1.如何判断是ajax请求?

请看下面代码:

String requestType = request.getHeader("X-Requested-With");
if("XMLHttpRequest".equals(requestType)){
System.out.println("非AJAX请求..");
System.out.println("AJAX请求..");
}else{
//此时requestType为null
}

2.了解Jquery中“$.ajaxSetup()方法”
//设置AJAX的全局默认选项
$.ajaxSetup( {
url: "/index.html" , // 默认URL
aysnc: false , // 默认同步加载
type: "POST" , // 默认使用POST方式
headers: { // 默认添加请求头
"Author": "CodePlayer" ,
"Powered-By": "CodePlayer"
} ,
error: function(jqXHR, textStatus, errorMsg){ // 出错时默认的处理函数
// jqXHR 是经过jQuery封装的XMLHttpRequest对象
// textStatus 可能为: null、"timeout"、"error"、"abort"或"parsererror"
// errorMsg 可能为: "Not Found"、"Internal Server Error"等

// 提示形如:发送AJAX请求到"/index.html"时出错[404]:Not Found
alert( '发送AJAX请求到"' + this.url + '"时出错[' + jqXHR.status + ']:' + errorMsg );
}
} );

// 未设置任何参数,但url、async、type、headers、error等参数的默认值均已被$.ajaxSetup()更改(如上)
$.ajax( );

// 设置了url、type、success、error,就使用自己设置的参数值
// 但async、headers等参数的默认值已被$.ajaxSetup()更改
$.ajax( {
url: "myurl.php?action=list" ,
type: "GET" ,
success: function( data, textStatus, jqXHR ){
alert("返回数据:" + data);
} ,
error: function(jqXHR, textStatus, errorMsg){
alert("自己的error!");
}
});

// 上述$.ajaxSetup()的默认设置对$.get()、$.post()、load()、$.getJSON()、$.getScript()等AJAX函数也生效
// 因为这些函数也是在内部调用$.ajax()函数来实现的,只不过它们在内部都设置了一些参数

// $.get()在内部调用$.ajax()时已设置type为"GET",因此仍然使用GET方式。
// 但url、async、headers、error等参数的默认值已被$.ajaxSetup()更改
$.get( );

// $.post()在内部调用$.ajax()时已设置type为"POST",因此仍然使用POST方式。
// url也被设置为"user/action.php?method=addUser"
// 但async、headers、error等参数的默认值已被$.ajaxSetup()更改
$.post( "user/action.php?method=addUser" );


3.complete : function(){} 是什么函数?
complete: function() {} 这个是回调函数,在完成的时候,会执行这个方法。(在我们的情形中是当ajax请求完成之后调用。)

4. $.ajax({})中的 error , complete , beforeSend 回掉函数的了解

/*
通过捕捉error事件来获取出错的信息:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}

XMLHttpRequest.readyState: 状态码的意思
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

status:返回的HTTP状态码,比如常见的404,500等错误代码。
statusText:对应状态码的错误信息,比如404错误信息是not found,500是Internal Server Error。
responseText :服务器响应返回的文本信息

complete: function (XMLHttpRequest, textStatus) {
//textStatus的值:success,notmodified,nocontent,error,timeout,abort,parsererror
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//textStatus的值:null, timeout, error, abort, parsererror
//errorThrown的值:收到http出错文本,如 Not Found 或 Internal Server Error.
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: