我希望每五秒重复一次这个功能:
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 :(得分: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);