Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何阻止AJAX进行多次调用?_Javascript_Jquery_Ajax_Jquery Countdown - Fatal编程技术网

Javascript 如何阻止AJAX进行多次调用?

Javascript 如何阻止AJAX进行多次调用?,javascript,jquery,ajax,jquery-countdown,Javascript,Jquery,Ajax,Jquery Countdown,我使用jquery倒计时插件()来显示时间。我正在调用一个函数,以便在回调事件“onTick”上添加更多时间。当时间倒计时到00:00:00时,该函数将进行ajax调用以添加额外的时间。它工作正常,但每次计时器等于00时,ajax都会进行多次调用(>15)。我怎样才能打一个电话?我尝试了async:false,但它仍在进行多个调用。多谢各位 $(this).countdown({ until: time, format: 'HMS', onTick: addExtraTime }); func

我使用jquery倒计时插件()来显示时间。我正在调用一个函数,以便在回调事件“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;
        }
      }
    }

您有一个变量,
ajaxLoading
,用于确定Ajax请求是否正在进行中,但您在调用
$.Ajax()
后立即将其设置为
false
,而不是在收到响应时。在成功和错误处理程序中,将其设置为
false

您有一个变量,
ajaxLoading
,用于确定Ajax请求是否正在进行中,但在调用
$.Ajax()
后立即将其设置为
false,而不是在收到响应时。在成功和错误处理程序中将其设置为
false

您正在设置
ajaxLoading=false即使ajax请求仍在执行中,在请求完成后将其设置为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;
    }

您正在设置
ajaxLoading=false即使ajax请求仍在执行中,在请求完成后将其设置为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;
    }