假设我有一些文件:server.php,client.php和一个表:user [id,name,status]
server.php将处理以下内容:更新用户状态等...
在client.php中,我有一个对server.php的ajax调用,用于检查状态是否被激活(每10秒钟一次):
$(document).ready(function(){
setInterval(function(){
check_user_status(user_id)
},10000);
});
check_user_status = function (user_id) {
$.ajax({
type: "post",
data: "user_id="+user_id,
url : "server.php",
success: function(data){
// do something with the response
// I want to exit the checking operation if user is already activated
},
error: function(e){
alert("Error occurred");
}
});
}
怎么可能呢?
谢谢你的时间!
答案 0 :(得分:6)
记住给定时器的ID:
var timer = setInterval( ... );
然后在满足条件时取消它:
clearInterval(timer);
timer
变量需要位于“范围”中 - 最简单的解决方案是将所有代码放在document.ready
处理程序中。
FWIW,实际上最好使用setTimeout
代替setInterval
,然后每次都重新启动计时器。
setInterval
会导致问题,因为它会每10秒尽职尽责地排队回调。一旦服务器响应,它将突然尝试立即运行所有这些回调。
使用setTimeout
代替将确保在上一个检查实际完成之前没有新检查排队。
答案 1 :(得分:1)
尝试:
var intrvl = setInterval(function(){
check_user_status(user_id)
},10000);
....
success: function(data){
clearInterval(intrvl);
}