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

本文介绍如何配置全局Ajax请求,包括设置默认选项、错误处理及回调函数的理解。通过示例展示了如何统一处理请求超时和登录过期的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  配置全局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.   
}   
*/  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OOEM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值