Ajax:加载前等待X秒

时间:2009-12-07 13:10:30

标签: ajax loading

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

我已经修改了一下脚本,现在当用户选中其中一个复选框时,结果div会自动刷新。 load函数由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() {});  
                }
            });
          });
        });
      });

3 个答案:

答案 0 :(得分:1)

尝试使用setTimeout。

实施例

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

答案 1 :(得分:1)

使用setTimout功能。像这样:

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

但是,确保在选中新按钮时附加事件以清除该超时,否则您最终会多次触发Ajax。

if(timer) { clearTimout(timer); }

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

答案 2 :(得分:0)

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

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

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

  1. 用户点击
  2. 有超时吗?如果是,则忽略点击
  3. 否则为AJAX呼叫设置超时