權限攔截很常用,但是遇到了一個問題,使用ajax發送請求時,後端跳轉不成功。
struts2 老項目。 後來研究了下,因爲ajax是異步請求,所以返回的數據當做了普通的文本進行解析了。,
並沒有進行真正的頁面跳轉。
解決辦法就是後端重定向後設置http狀態碼位非200.比如302
然後前端的ajax設置一個全局的error處理方式
$.ajaxSetUp 可以設置全局的配置項。
error: function (XMLHttpRequest, textStatus, errorThrown) {
可以解析XMLHttpRequest.responseText 內容或者狀態碼。
然後進行頁面跳轉。
比如
if(XMLHttpRequest.responseText .indexOf("403")>0){
window.location = https://www.so.com; //跳轉到的頁面。
}
}
這樣後端就可以直接跳轉了。
response.sendRedirect("XXXXX");
response.setStatus(302);
有時候僅僅監聽成功的還不行,可能還需要再監聽下成功的。
這個就有點類似於java的攔截器了,收到後端請求後,再統一處理下。
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete:function(XMLHttpRequest,textStatus){
}
});
部分參考