实现AJAX队列的方法

时间:2014-01-13 06:41:33

标签: javascript ajax jquery queue

  • jQuery 2.0.3

我想在编辑输入控件中更改数据时触发AJAX调用。我意识到我可以通过onChange事件来做到这一点。但是,如果用户输入:123我不想激活AJAX 3次。

相反,我想等待“设置期”,然后关闭通话。每次控制改变时,设置周期都会重置。所以这个想法就像我快速输入123一样,一段时间过去了(解决)并且我进行了AJAX调用。

有没有人对如何使用jQuery实现这一点有任何建议?我可以在jQuery中使用任何构造来执行此操作吗?

2 个答案:

答案 0 :(得分:2)

您需要使用超时限制事件

$('input').on('keyup', function() {
    var self = this;

    clearTimeout( $(this).data('timer') );

    $(this).data('timer', 
        setTimeout(function() {
            $.ajax({
                url  : 'someurl.php',
                data : self.value
            });
        }, 500)
    )
})

答案 1 :(得分:-1)

简单的方法是在更改事件上使用setTimeout / clearTimeout:

var timeout = null;
$('input').bind('keyup blur', function() {
    if (timeout !== null) clearTimeout(timeout);
    timeout = setTimeout(function() {

        // Make your ajax request here

    }, 300);
});

在发出ajax请求之前,将300更改为您要等待的毫秒数。