1. 程式人生 > >過濾器對ajax請求的處理

過濾器對ajax請求的處理

當過濾器遇到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請求處理結果前都會呼叫此全域性方法。