2

我想使用 php 文件的返回来不断更新 html 文档。因此我需要使用 jQuery 函数:

$.get('returnfunction.php', function(data) { 
test=data;
document.getElementById('t1').innerHTML=test; 
}); 

如何在 javascript 中连续调用此函数?setInterval 似乎不适合这个异步函数。

谢谢

4

2 回答 2

3

使用调用异步函数的问题setInterval是,如果服务器或网络速度较慢,未响应的请求可能会累积。

以下是您可以这样做的方法:

(function doOne(){
    $.get('returnfunction.php', function(data) { 
       test=data; 
       document.getElementById('t1').innerHTML=test;
       setTimeout(doOne, 1000);
    }); 
})();

这样,下一次呼叫$.get发生在服务器应答最后一次呼叫后一秒钟。

您可能还想对失败采取行动,而不仅仅是对成功采取行动,具体取决于您的具体要求。

于 2013-09-04T15:43:35.023 回答
2

setInterval可能不是一个好主意,因为不能保证顺序,因此您可以每隔 X 秒发送一次请求,这些请求要么一次全部返回,要么根本不返回,或者以随机顺序返回。您可以setTimeout在回调中使用在 X 时间内启动另一个请求:

function getStuff() {
    $.get('returnfunction.php', function(data) { 
        test=data;
        document.getElementById('t1').innerHTML=test; 
        setTimeout(getStuff, 5000); //Run this func again in 5 sec
    }); 
}
于 2013-09-04T15:43:46.790 回答