Ajax延迟无效

时间:2014-03-17 08:18:49

标签: javascript jquery ajax forms get

$(document).ready(function() {
   setInterval($("#to").on("change keyup paste click mouseout", function() {
      $.get('ajaxSearch.php', $("#form").serialize(), function(data) {
         $('#result').html(data);
      });
   }, 3000);
});

ajax延迟或setTimeout不起作用。我想延迟输入字段并在3秒后运行ajax但它无法正常工作。

3 个答案:

答案 0 :(得分:3)

您应该使用setTimeout来延迟ajax请求。

如果change keyup paste click mouseout事件之一被触发,您只需取消之前的延迟并创建一个新的延迟。

$(document).ready(function() {
   var timer_id;
   $("#to").on("change keyup paste click mouseout", function() {
      if (timer_id) {
          clearTimeout(timer_id);
      }
      timer_id = setTimeout(function() {
         $.get('ajaxSearch.php', $("#form").serialize(), function(data) {
            $('#result').html(data);
         });
      }, 3000);    
   });
});

答案 1 :(得分:0)

您的语法错误,setInterval()也应该在处理程序

$(document).ready(function () {
    var interval;
    $("#to").on("change keyup paste click mouseout", function () {
        if (interval) {
            return
        };
        setInterval(function () {
            $.get('ajaxSearch.php', $("#form").serialize(), function (data) {
                $('#result').html(data);
            });
            interval = undefined;
        }, 3000);
    });
});

此外,如果已经有一个时间间隔,我们不需要再添加一个电话。

答案 2 :(得分:0)

在你的情况下你设置延迟到事件处理(为什么你使用setInterval而不是setTimeout?)

$(document).ready(function() {
    $("#to").on("change keyup paste click mouseout", function() {
        setTimeout(function(){
            $.get('ajaxSearch.php', $("#form").serialize(), function(data) {
                $('#result').html(data);
            });
        }, 3000);  
    });
});