【问题标题】:Alternative To Page Refresh PHP页面刷新 PHP 的替代方案
【发布时间】:2015-01-29 15:07:04
【问题描述】:

我正在学习 PHP,我想用我制作的一些类似加密的数字图像制作一个时钟。

我遇到的问题是我希望时钟每秒更新一次,但不刷新页面。所以我的问题是,你建议我怎么做?

现在我使用 HTML 页面刷新,这会导致我的图像在每次重新加载时闪烁。

提前感谢您的帮助!

代码如下:

<!--
    * By megabyteGhost
    * megabyteGhost.tumblr.com
-->


<html>
    <head>
        <meta http-equiv="refresh" content="0.5" >
    </head>

    <body bgcolor="black">
    <?php
        date_default_timezone_set('America/New_York');
        $hour = date(H); 
        $minutes = date(i);
        $seconds = date(s);

        echo '<img src="images/'.$hour.'.png">';
        echo '<img src="images/'.$minutes.'.png">';
        echo '<img src="images/'.$seconds.'.png">';
    ?>

    </body>
</html>

【问题讨论】:

  • 这基本上就是 java 脚本的用途......
  • 不可能只使用 php。你需要 javascript。

标签: php html refresh clock live-update


【解决方案1】:

您可以(仅)使用 Javascript:

(我添加了alt标签,因为这里显然无法加载图像)

setInterval(function(){
  var date = new Date();
  
  var hr = date.getHours();
  var min = date.getMinutes();
  var sec = date.getSeconds();
  
  //document.getElementById("hours").src = "images/" + hr + ".png";
  document.getElementById("hours").alt = hr;
  //document.getElementById("minutes").src = "images/" + min + ".png";
  document.getElementById("minutes").alt = min;
  //document.getElementById("seconds").src = "images/" + sec + ".png";
  document.getElementById("seconds").alt = sec;
},1000)
<span id="timer">
  <img src="" id="hours" alt="0">:
  <img src="" id="minutes" alt="0">:
  <img src="" id="seconds" alt="0">
</span>

请注意,您应该预加载图像!

JS:

//before starting the interval:
var preloadedImages = [];
for(var i=0;i<60;i++){
    preloadedImages[i] = new Image();
    preloadedImages[i].src = "images/"+i+".png";
}

这样,浏览器会将它们保存在内存中,因此在第一次加载图像时,第二个计数器不会闪烁

[编辑]: 顺便说一句....避免这种情况:

$hour = date(H); 
$minutes = date(i);
$seconds = date(s);

应该是这样的:

$hour = date("H"); 
$minutes = date("i");
$seconds = date("s");

否则它们将被检查为常量变量并打印出一条通知,这将向您的日志发送垃圾邮件,如果您的日志级别足够低......而且,它需要更多的处理时间(仅三个调用没什么大不了的,但是如果经常使用会累积...)

【讨论】:

  • 感谢您的课程和 PHP 建议(您可能认为我会用引号括起来,我猜我忘记了...对于 PHP 编程并不陌生,所以这是一个业余错误)。
  • 是的,我就是这个意思。这是一个业余错误,因为我不可能用任何其他语言犯这个错误。
【解决方案2】:

这可以使用 Javscript 、 Ajax 或 Jquery 来完成,无论您有什么经验。只有 php 不足以做到这一点,因为如果不刷新,您无法在没有 ajax 的情况下从服务器请求某些内容。

【讨论】:

    【解决方案3】:

    不幸的是,php 做不到。发生这种情况是因为 php 确实是一个预处理脚本。这意味着当您访问 php 页面时,服务器将读取该代码,在内部执行所有行,如果有任何输出,它将被发送到您的浏览器。您的 HTML 代码实际上是您的 php 脚本的输出。在学习 php 时理解这一点非常重要。

    输出可以是 HTML 文本、JavaScript、纯文本甚至图像。重要的是,只有在服务器完成读取您的代码后,任何输出才会显示在您的浏览器中。所以任何动态动作都不能使用 php 来完成。当你需要动态时,你需要 JavaScript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2011-02-15
      • 2011-10-17
      相关资源
      最近更新 更多