//該代碼主要實現舊系統已經挺龐大了,沒辦法去改變全部的頁面的操做方式,而且必定要作操做是登陸失效執行又不能中斷跳出循環,很難調整架構的狀況(function ($) {
//首先備份下jquery的ajax方法
var $oajax = $.ajax;
//重寫jquery ajax保留舊方法,用於執行判斷是否登陸
$.oajax = function (opt) {
$oajax(opt);
};
//重寫jquery的ajax方法
$.ajax = function (opt) {
console.log("執行了重寫Ajax");
//ajax回調方法
var ajax = function() {
//備份opt重載方法
var fn = {
error: function(XMLHttpRequest, textStatus, errorThrown) {},
success: function(data, textStatus) {},
beforeSend: function(XHR) {},
complete: function(XHR, TS) {}
}
if (opt.error) {
fn.error = opt.error;
}
if (opt.success) {
fn.success = opt.success;
}
if (opt.beforeSend) {
fn.beforeSend = opt.beforeSend;
}
if (opt.complete) {
fn.complete = opt.complete;
}
if (opt.nobeforeSend == undefined) {
opt.nobeforeSend = true;
}
//擴展加強處理
var oopt = $.extend(opt,
{
error: function(XMLHttpRequest, textStatus, errorThrown) {
//console.log("出現錯誤了");
//默認處理方法
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success: function(data, textStatus) {
//console.log("執行成功了");
fn.success(data, textStatus);
},
beforeSend: function(XHR) {
//console.log("ajax以前就執行了");
fn.beforeSend(XHR);
},
complete: function(XHR, TS) {
//console.log("執行完成");
//默認處理方法
fn.complete(XHR, TS);
}
});
return $oajax(oopt);
};
//指意 用於不須要檢測是否須要登陸
if (!opt.nobeforeSend) {
//檢查系統登陸狀況
var islogin = CheckIsLogin();
if (islogin == true) {
return ajax();
}
//調用彈窗
top.OpenDialog();
//定時檢測是否已經執行登陸,等待執行
var it = setInterval(function() {
if (top.IsContinueLoad == true) {
clearInterval(it);
return ajax();
}
},
100);
} else {
return ajax();
}
};
})(jQuery);
function CheckIsLogin() {
var islogin = false;
//用舊ajax執行,避免死循環
$.oajax({
url: "/Login/IsLogin",
type: "get",
async: false,
dataType: "json",
success: function (data) {
islogin = data;
top.IsContinueLoad = islogin;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.error("檢查登陸出現異常,狀態:" + textStatus);
console.log(XMLHttpRequest);
console.log(errorThrown);
//top.IsContinueLoad = false;
}
});
return islogin;
};