【问题标题】:Updating html code with javascript when php return changed当php返回改变时用javascript更新html代码
【发布时间】:2013-09-04 15:40:10
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 在 setInterval 中,“数据”变量未更新。如果您知道可行的解决方案,请告诉我,它不需要非常高效或其他什么。更新应该在 1-5 秒之间
  • Javascript 计时器不准确,因为它们被设计为响应页面中正在发生的其他事件。

标签: php javascript jquery html callback


【解决方案1】:

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

你可以这样做:

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

这样,对$.get 的下一次调用将在服务器应答最后一次调用后一秒发生。

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

【讨论】:

    【解决方案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-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2023-04-07
      • 2021-08-12
      • 2016-08-21
      • 1970-01-01
      • 2014-01-18
      相关资源
      最近更新 更多