如何在按钮单击时避免多个ajax调用

时间:2011-12-07 04:35:26

标签: jquery ajax timer callback

我有一个显示“下一步”的按钮,每当我点击它时,它会增加一个值并生成带回调的ajax调用。

问题在于,有时我想连续多次点击它以增加3或4,所以我反复点击“下一步”按钮。

我基本上想要一些油门,所以如果你没有在最后1秒点击“下一步”按钮或类似的东西,那么直到启动ajax调用。

这样,如果我真的很快点击它多次,它只会触发最后一个值的ajax调用。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

这样的事情可以解决问题:

var timer;
$('selector').on('click', function (){
    if (timer) {
        clearTimeout(timer);
    }

    timer = setTimeout(function () {
        // ajax call
    }, lengthofdelay);
});

答案 1 :(得分:0)

$("#next_button").click(function() {
    var now = $(this).val(); $(this).val(now++); //increment value
    if (timer) { 
       clearTimeout(timer); //abort ajax call if button clicked within 1 sec, and start over
    }
    timer = setTimeout(doAjax, 1000); //do ajax call in 1 second
});


function doAjax() {
    //do ajax call here
}