【问题标题】:Ajax delay is not workingAjax 延迟不起作用
【发布时间】:2014-03-17 08:18:48
【问题描述】:
$(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,但它不起作用。

【问题讨论】:

    标签: javascript jquery ajax forms get


    【解决方案1】:

    您应该使用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);    
       });
    });
    

    【讨论】:

      【解决方案2】:

      您的语法错误,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);
          });
      });
      

      另外,如果已经有一个时间间隔在进行中,我们不需要添加另一个调用。

      【讨论】:

        【解决方案3】:

        在您的情况下,您将 deley 设置为事件处理(为什么您使用 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);  
            });
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-20
          • 1970-01-01
          相关资源
          最近更新 更多