2012-02-11 30 views
0

我期待重复此功能每五秒钟:自动重复AJAX功能不起作用

function check_votes(id) { 
     $.ajax({ 
      type: 'POST', 
      url: 'check_votes.php', 
      data: 'checkvotes='+id, 
      timeout: 0, 
      success: function(data) { 
      window.setTimeout(check_votes(id), 5000); 
      $('.vote_count_'+id).show(); 
      $('.vote_count_'+id).html("("+data+" votes so far)"); 
      } 
     }); 
     return false; 
    }; 

为什么没有这一行做的伎俩:

window.setTimeout(check_votes(id), 5000); 

事实上,它会打破它,所以我需要使用以下行:

window.setTimeout(check_votes, 5000); 

但是,它允许脚本初始运行,但我没有自动重复。

回答

0
window.setTimeout(check_votes(id), 5000); 

是错误的,因为check_votes(id)立即调用函数,而setTimeout方法希望你传递一个函数指针作为第一个参数。

window.setTimeout(check_votes, 5000); 

是错误的,因为你没有通过check_votes功能id参数,我想你的AJAX调用崩溃,因为它缺少它。

所以请尝试以下操作:

window.setTimeout(check_votes, 5000, id); 

注意我们是如何传递id参数为check_votes回调。

您可以通过使用此重载参数的任意数目:

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]); 
0

你需要一个“匿名函数”

window.setTimeout(function(){check_votes(id)}, 5000); 
来包装这个