我正在使用jquery倒计时器插件(http://keith-wood.name/countdown.html)来显示时间。我正在调用一个函数来在回调事件'onTick'上添加更多时间。当时间倒计时到00:00:00时,该函数将进行ajax调用以增加额外的时间。它工作正常但每次计时器等于00时,ajax正在进行多次调用(> 15)。如何才能发送一个电话?我尝试过async:false但是它仍在进行多次调用。谢谢。
$(this).countdown({ until: time, format: 'HMS', onTick: addExtraTime });
function addExtraTime() {
if ($.countdown.periodsToSeconds(periods) === 00) {
var postValue = { ID: id }
if (!ajaxLoading) {
ajaxLoading = true;
$.ajax({
url: "@Url.Action("AddExtraTime", "Home")",
type: 'post',
dataType: 'json',
contentType: "application/json",
data: JSON.stringify(postValue),
success: function() {
// show success
},
error: function(data) {
// show error
}
});
ajaxLoading = false;
}
}
}
答案 0 :(得分:4)
您有一个变量ajaxLoading
,您可以使用该变量来确定Ajax请求是否正在进行中,但是在调用<之后您将其设置为false
/ em> $.ajax()
而不是在您收到回复时。将其设置为成功和错误处理程序中的false
。
答案 1 :(得分:2)
即使ajax请求仍在进行中,您仍在设置ajaxLoading = false;
,请在完成请求后将其设置为false
if (!ajaxLoading) {
ajaxLoading = true;
$.ajax({
url: "@Url.Action("AddExtraTime", "Home")",
type: 'post',
dataType: 'json',
contentType: "application/json",
data: JSON.stringify(postValue),
success: function() {
// show success
},
error: function(data) {
// show error
}
complete: function(){
ajaxLoading = false;
}
});
//ajaxLoading = false;
}