Добавление задержки в запрос $ .post jquery - PullRequest
8 голосов
/ 04 марта 2011

Я отправляю запрос jquery $ .post при любом изменении флажка в форме. Я хочу отложить $ .post на 500 мс, если пользователь быстро установит несколько флажков, чтобы избежать нескольких бесполезных запросов.

Вот мой код, я добавил функцию setTimeout, которая, кажется, работает со всем, кроме этой функции $ .post ...

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

$(document).ready(function() {  

    $('.checkbox').change(function() {

        delay(function(){                             
            $.post("/?page_id=4", $("#selectors").serialize(), function(data){
                $('#results').html(data);
            }); 
        });

    }, 1000 );

});

Есть идеи, почему это не работает?

Ответы [ 2 ]

12 голосов
/ 04 марта 2011

Живой пример

это:

$('.checkbox').change(function() {

    delay(function(){                             
        $.post("/?page_id=4", $("#selectors").serialize(), function(data){
            $('#results').html(data);
        }); 
    });

}, 1000 );

должно быть:

    $('.checkbox').change(function() {

        delay(function(){    
            alert('post');            
            $.post("/?page_id=4", $("#selectors").serialize(), function(data){
                $('#results').html(data);
            }); 
        }, 1000);

    });
5 голосов
/ 04 марта 2011

jQuery уже имеет функцию задержки:

$(window).delay(500).queue(function() {
  $.post({});
});
...