【问题标题】:Ajax: wait X seconds before loadAjax:加载前等待 X 秒
【发布时间】:2009-12-07 13:10:29
【问题描述】:

我有一个搜索表单,可以在指定的 div 中显示实时结果(查看Filter results with Jquery

我稍微修改了脚本,现在当用户选中其中一个复选框时,结果 div 会自动刷新。加载函数由 onChange 事件处理。

有没有办法让 ajax 在指定时间后加载结果脚本?

例如,如果我选中一个复选框,则脚本应等待 2 秒才能加载脚本。通过这种方式,用户可以检查,例如,2 或 3 个复选框,当它停止选择时,ajax 将加载脚本。

--编辑--

脚本的 ajax 调用不是通过函数完成的,代码如下:

$(document).ready(function()
    {
        $('#category_filter').click(function()
        {

            var catArray = new Array();
            var j = 0;
            for(var i = 0; i < <?php echo $categories_count;?>; i++)
            {
                if(document.category_filter.filter_id[i].checked == 1)
                {
                    catArray[j] = document.category_filter.filter_id[i].value;
                    j++;
                }
            }
if(catArray[0])
            $.ajax(
            {
                type:    "POST",
                 url:     "index.php?action=ticket-search",
                data:    ({ filter: 'category',filter_id : catArray.toString() }),
                success: function(msg)
                {
                    $('#t_content').html(msg)
                                .hide()  
                                .fadeIn(700, function() {});  
                }
            });
          });
        });
      });

【问题讨论】:

    标签: ajax loading


    【解决方案1】:

    尝试使用 setTimeout。

    例子

    setTimeout("alert('hello')",2000);
    

    【讨论】:

      【解决方案2】:

      使用setTimout 函数。像这样:

      var timer = setTimeout(yourFunction(), 2000);

      但是,请确保在检查新按钮时附加一个事件以清除超时,否则您最终会多次触发 Ajax。

      if(timer) { clearTimout(timer); }

      var timer = setTimeout(yourFunction(), 2000);

      【讨论】:

        【解决方案3】:

        您可以使用 setTimeout() 调用等待几秒钟。

          var t = setTimeout(myAjaxFunction, 2000); //wait two seconds
        

        如果您允许用户单击多个复选框,您可能需要检查是否已设置超时。这是为了避免多个 AJAX 调用每次等待 2 秒。逻辑将是:

        1. 用户点击次数
        2. 是否有超时?如果是,则忽略点击
        3. Else 为 AJAX 调用设置超时

        【讨论】:

        • 你想要 setTimeout(myAjaxFunction, 2000); 或者它会立即执行。 (当然如果myAjaxFunction返回你要执行的函数就可以了)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 2021-09-08
        相关资源
        最近更新 更多