第一篇博文,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一個前置處理就可以了。