jQuery(function ($) { // 備份jquery的ajax方法 var _ajax = $.ajax; // 重寫ajax方法,先判斷登錄在執行success函數 $.ajax = function (opt) { var _su...
jQuery(function ($) { // 備份jquery的ajax方法 var _ajax = $.ajax; // 重寫ajax方法,先判斷登錄在執行success函數 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { // 如果後臺將請求重定向到了登錄頁,則data裡面存放的就是登錄頁的源碼,這裡需要找到data是登錄頁的證據(標記) if ((typeof data) == 'string' && data.indexOf('shangjiaAjaxExtend') != -1) { window.location.href = 'http://' + window.location.host + '/S/BusiLogin/Index'; return; } else { _success(data, textStatus); } } }); return _ajax(_opt); }; });
重寫原理為:由於閉包函數先於頁面上script載入,所以在此可以直接覆寫$.ajax方法. 重點是紅色部分內容一定要retrun 否則在使用load方法載入頁面時報錯 “Uncaught TypeError: Cannot call method 'done' of undefined。”