使用回调函数…Jquery.Get
我一直在寻找一个简单易懂的答案,但我找不到 我有一个jquery.get ajax函数来运行一些东西,运行大约需要10秒,因为我在php文档中有一个等待。我想在10秒后再次运行它,所以基本上是在ajax函数完成时。我正在考虑使用回调,但我不知道如何构造它,或者应该使用while循环还是。。我迷路了 这是我到目前为止的代码使用回调函数…Jquery.Get,jquery,Jquery,我一直在寻找一个简单易懂的答案,但我找不到 我有一个jquery.get ajax函数来运行一些东西,运行大约需要10秒,因为我在php文档中有一个等待。我想在10秒后再次运行它,所以基本上是在ajax函数完成时。我正在考虑使用回调,但我不知道如何构造它,或者应该使用while循环还是。。我迷路了 这是我到目前为止的代码 function listen(callbackFn) { $.get('thread.php?tag=<? echo $tag ?>&userna
function listen(callbackFn) {
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username '];} ?>', function(data) {
$('#chats').append(data);
callbackFn;
});
};
函数监听(callbackFn){
$.get('thread.php?标记=&username=',函数(数据){
$(#chats')。追加(数据);
Callbackbon;
});
};
我认为最好的办法是将其包装成一个函数并递归调用:
function poll() {
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>', function(data) {
$('#chats').append(data);
poll();
});
}
poll();
函数轮询(){
$.get('thread.php?标记=&username=',函数(数据){
$(#chats')。追加(数据);
poll();
});
}
poll();
每次Ajax调用返回时,这将几乎永远轮询。将代码放入函数中,并以10秒的超时递归调用它:
function do() {
$.get('...', function (data) {
// data processing...
setTimeout(do, 10000);
});
}
do();
这应该适合您:
(function repeat_request(){
$.get('thread.php?tag=<? echo $tag ?>&username=<? if($_SESSION['loggedin']=='true'){echo $_SESSION['username'];} ?>',
function(data) {
$('#chats').append(data);
repeat_request();
}
);
})();
您可以尝试:
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
}
);
};
函数监听()
{
$.get('thread.php?标记=&username=',
函数(数据){
$(#chats')。追加(数据);
setTimeout(listen,100);//防止递归调用
}
);
};
要在原始调用后再次调用.get()?在网页的整个生命周期中,这是不是每10秒重复一次?假设这是我想要的,我更喜欢让客户端浏览器使用setInterval,而不是让php等待10秒。嗯……我必须让php等待10秒……我正在做长时间的轮询。但是,在这种情况下,我仍然可以将函数放在成功块中,对吗?@scott似乎PHP处理需要一段时间(这可能是由于等待、延迟或任何其他因素),下一个调用应该在前一个调用完成10秒后启动。这就是它的作用。在我看来,这是有道理的。有一个间隔可能会很快导致对服务器的持续请求,而不会在其间出现停顿。@Robert让PHP等待并不长。PHP在等待什么?从技术上讲,它不是在等待,它一直在进行sql查询,其间总共等待了10秒。我似乎无法让它工作,我在使用firebug,它似乎只运行了一次,然后它就不再调用递归函数了。
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
}
);
};