私はこれらのスレッドをたくさん見て、それらのいくつかを調べましたが、これまでのところ何も役に立たなかったようです。そのため、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);
}
編集: