我已經看過一堆這些線程,並經歷了其中的一些,但目前爲止似乎沒有任何幫助。所以我試圖在ajax調用發生時連續調用定時器。一旦ajax調用達到完整的事件,我想清除間隔定時器,但這似乎並沒有工作,因爲對CheckProgress()的調用持續進行。還有一個javascript clearInterval不起作用
這裏是我的代碼:
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);
}
編輯:
你確定你的'complete'函數是否被調用過?這可能只是您的AJAX請求的一個問題,而與'setInterval()'無關。 – nrabinowitz
100%肯定它的工作。我可以看到console.log(「結束進度檢查...」);正在處理中。我添加了一個螢火蟲的圖像,以幫助顯示正在發生的事情。 – Robodude
我覺得你太過於複雜了。爲什麼您首先需要這些定時器,何時您可以使用$ .ajax提供的事件處理所有事情? – topek