2009-12-07 84 views
2

我有一个搜索表单,显示在指定的div直播结果之前等待X秒(看有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() {}); 
       } 
      }); 
      }); 
     }); 
     }); 

回答

0

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

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

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

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

你想做出'的setTimeout(myAjaxFunction,2000);'或者它会立即执行。 (当然如果'myAjaxFunction' *返回*你想要执行的函数,这很好) – 2009-12-07 13:14:56

+0

@David谢谢,我更新了答案 – 2009-12-07 13:16:28

1

尝试使用的setTimeout。

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

使用setTimout功能。像这样:

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

但是,请确保每当一个新的按钮被选中,否则你最终烧制阿贾克斯多次附加一个事件以清除该超时。

if(timer) { clearTimout(timer); }

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