如何在没有刷新页面的情况下每隔一小时更新一次变量?

时间:2017-11-16 08:38:35

标签: javascript php jquery

控制器:

$number = rand(1, 100);

查看:

<div id="lucky">
   Your lucky number: <?php echo $number ?>.
</div>

如何在不手动刷新页面的情况下每小时更新$number的值?我可以使用 JavaScript / jQuery 中的setInterval,但我想在整个小时(0:00,1:00,2:00等)完成这项工作。做这个的最好方式是什么?我可以使用PHP,CRON,JS和JS框架......

2 个答案:

答案 0 :(得分:0)

尝试找出它现在的时间,计算出下一个整整一小时的时间,然后等待那么久:

function doSomething() {
    var d = new Date(),
        h = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours() + 1, 0, 0, 0),
        e = h - d;
    if (e > 100) { // some arbitrary time period
        window.setTimeout(doSomething, e);
    }
    // your code(May be an ajax call to show lucky num)
}

检查e&lt; 100只是为了确保你不会在5毫秒之类的事情上做setTimeout并让它成为一个疯狂的循环。

答案 1 :(得分:0)

您可以使用解决方案

&#13;
&#13;
var d = new Date();

var firstTrigger = 60000* (60 - d.getMinutes());

// This is for 1st Time Trigger
setTimeout(function(){
  console.log("1st time trigger", rand(1, 100));
  
  // This is continuous trigger every full hour
  setInterval(function(){
    console.log("Continuous trigger every hour", rand(1, 100));
  }, 3600000);
}, firstTrigger);
&#13;
&#13;
&#13;

在您的情况下,您将触发代码而不是console.log

希望这会对你有所帮助。