自动重复AJAX功能不起作用

时间:2012-02-11 16:33:19

标签: ajax auto-update

我希望每五秒重复一次这个功能:

  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);

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

2 个答案:

答案 0 :(得分: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, ...]);

答案 1 :(得分:0)

您需要将其包装在“匿名函数”

window.setTimeout(function(){check_votes(id)}, 5000);