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

来源:互联网 发布:郭艾伦奥运会数据 编辑:程序博客网 时间:2024/05/19 10:36
  配置全局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.   }   */