我一直在寻找一个易于理解的答案,但我找不到答案。
我有一个jquery .get ajax函数来运行一些东西,它需要大约10秒才能运行,因为我在php doc中等了。我希望在10秒后再次运行它,所以基本上当ajax函数完成时。我想使用回调,但我不知道如何构建它或我应该使用while循环或..我失去了...
这是我迄今为止的代码
function listen(callbackFn) {
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username '];} ?>', function(data) {
$('#chats').append(data);
callbackFn;
});
};
答案 0 :(得分:1)
将代码放入函数中并以超时10秒递归调用:
function do() {
$.get('...', function (data) {
// data processing...
setTimeout(do, 10000);
});
}
do();
答案 1 :(得分:1)
这应该适合你:
(function repeat_request(){
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>',
function(data) {
$('#chats').append(data);
repeat_request();
}
);
})();
一旦前一个请求成功,就会执行名为repeat_request
的函数。请注意,如果任何请求失败(例如用户的互联网暂时断开连接),请求将停止重复。如果您希望它继续重复,您应该使用.complete()
而不是成功,如下所示:
(function repeat_request(){
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>',
function(data) {
$('#chats').append(data);
}
).complete(repeat_request);
})();
答案 2 :(得分:0)
我认为你最好的办法就是把它包装成一个函数并递归调用它:
function poll() {
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>', function(data) {
$('#chats').append(data);
poll();
});
}
poll();
每次Ajax调用返回时,这都将永远进行轮询。
答案 3 :(得分:0)
您可以尝试:
function listen()
{
$.get('thread.php?tag=<?php echo $tag ?>&username=<?php
if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>',
function(data) {
$('#chats').append(data);
setTimeout(listen,100); // prevent recursive call
}
);
};