我已经看过一堆这些线程并经历了其中一些,但到目前为止似乎没有任何帮助。所以我试图在 ajax 调用发生时连续调用计时器。一旦 ajax 调用到达完成事件,我想 clearInterval 计时器,但这似乎不起作用,因为对 CheckProgress() 的调用一直在进行。
这是我的代码:
var timer = "";
$("#ChartUpdateData").click(function () {
$("#loadingimgfeatdiv").show(); //ajax loading gif
if (timer == "")
{
console.log("Starting Progress Checks...");
timer = window.setInterval("CheckProgress()", 5000);
}
$.ajax({
type: "POST",
async: true,
url: '@(Url.Action("UpdateServerData","Charts"))',
contentType: "application/json; charset=utf-8",
success: function (data) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
complete:function (jqXHR, textStatus) {
$("#loadingimgfeatdiv").hide();
StopCheckingProgress();
LoadChart();
},
});
});
function StopCheckingProgress()
{
window.clearInterval(timer);
timer = "";
console.log("Ending Progress Checks...");
}
function CheckProgress()
{
console.log("Checking Progress...");
console.log(timer);
}
编辑: