過濾器對ajax請求的處理
阿新 • • 發佈:2019-01-29
當過濾器遇到ajax呼叫時無法正常返回情況,需要在過濾器中對ajax呼叫進行處理,示例如下:
//判斷是否是ajax請求
private static boolean ajaxDofilterSessionNull(HttpServletRequest request,HttpServletResponse response){
boolean isAjax = false;
if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with" ).equals("XMLHttpRequest")) {
// ajax請求
response.setHeader("sessionstatus", "timeout");
isAjax = true;
}
return isAjax;
}
若是返回true則不能用response.sendRedirect(“”)來跳轉,此時需要一個ajax全域性方法jQuery.ajaxSetup,如下:
//全域性的ajax訪問,處理ajax清求時sesion超時
jQuery.ajaxSetup({
contentType : "application/x-www-form-urlencoded;charset=utf-8" ,
complete : function(XMLHttpRequest, textStatus) {
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus"); // 通過XMLHttpRequest取得響應頭,sessionstatus,
if (sessionstatus == "timeout") {
// 如果超時就處理 ,指定要跳轉的頁面
window.location.replace("/login.htm");
}
}
});
這樣在ajax請求時就可以順利跳轉到需要的連結。此全域性方法可以放在任何頁面,所有ajax請求處理結果前都會呼叫此全域性方法。