使用回调函数... Jquery .Get

时间:2012-01-07 04:12:46

标签: jquery

我一直在寻找一个易于理解的答案,但我找不到答案。

我有一个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;
    });
};

4 个答案:

答案 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
    } 
);  
};