ajax前置處理實現異步請求session過期時跳轉登錄頁面


第一篇博文,mark一下zhq[0]。

問題描述:用戶頁面,當session過期或都session注銷后,普通頁面后端都會有過濾器,session過期Redirect到登錄頁面,但是ajax請求后端只會返回登錄頁面源碼並不跳轉。

網上有很多方法1.返回的字符串附加登錄狀態2.修改http頭信息;3.修改jquery源文件判斷;綜合比較還是以下方法最方便更易維護。個中缺點大家應該都明了就不贅述。

解決方案:

jQuery(function($){
    // 備份jquery的ajax方法  
    var _ajax=$.ajax;
    // 重寫ajax方法,
    $.ajax=function(opt){
        var _success = opt && opt.success || function(a, b){};
        var _error = opt && opt.error || function(a, b){};
        var _opt = $.extend(opt, {
            success:function(data, textStatus){
                // 如果后台將請求重定向到了登錄頁,則data里面存放的就是登錄頁的源碼,這里需要判斷(登錄頁面一般是源碼,所以這里只判斷是否有html標簽)
                if(data.indexOf('html') != -1) {
                    window.location.href= "http://www.baidu.com";
                    return;
                }
                _success(data, textStatus);  
          },
          error:function(data, textStatus){
            if(data.responseText.indexOf('html') != -1){
              window.location.href= "http://www.baidu.com";
              return;
            }
            _error(data, textStatus);
          } 
        });
        return _ajax(_opt);
    };
});
});  

 我遇到的是分頁ajax,請求getList.html頁面,session過期后端會把請求跳到login.html; 這里其實ajax執行的是error,所以只需給error一個前置處理就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM