더 이상 쓸데없는 소리는 하지 마세요. 그냥 코드를 게시하겠습니다.
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); }; });
재작성 원칙은 페이지의 스크립트보다 클로저 함수가 로드되기 때문에 여기서 $.ajax 메소드를 직접 재작성할 수 있다는 것입니다.
핵심은 빨간색 부분의 콘텐츠를 다시 실행해야 한다는 것입니다. 그렇지 않으면 로드 메서드를 사용하여 페이지를 로드할 때 "Uncaught TypeError: Cannot call method 'done' of undef."라는 오류가 보고됩니다. >