2017-07-02 9 views
0

Ich mag die aktuelle lokale Zeit auf meiner Wetter Webseite darzustellen„automatisch aktualisiert Zeit in PHP Ajax - Anzeige

Dies ist der Code, den ich von einer Abfrage verwenden.“ Automatisch Zeit aktualisiert wird in PHP Ajax "geschrieben vor 2 Jahren

<?php 
echo "<html> 
    <head> 
     <title>Realtime clock</title> 
     <meta charset='UTF-8'> 
     <meta name='viewport' content='width=device-width, initial-scale=1.0'> 
     <script src='http://code.jquery.com/jquery.js'></script> 
     <script> 
     $(document).ready(function(){ 
      setInterval(_initTimer, 1000); 
     }); 
     function _initTimer(){ 
      $.ajax({ 
       url: 'timer.php', 
       success: function(data) { 
        console.log(data); 
        data = data.split(':'); 
        $('#hrs').html(data[0]); 
        $('#mins').html(data[1]); 
        $('#secs').html(data[2]); 
       } 
      }); 
     } 
     </script> 
    </head> 
    <body> 
     <span id='hrs'>0</span>:<span id='mins'>0</span>:<span id='secs'>0</span> 
    </body> 
</html>"; ?> 
<?php date_default_timezone_set("Australia/Brisbane"); 
echo "Current Time: ". date("H:i:s"). " AEST"; 
?> 

Dies ist, was ich getwhen ich dies auszuführen:

17:05:10 Aktuelle Zeit: 17.01.30 AEST

Was ich bin mit dem Ziel zu erreichen ist : Aktuelle Zeit: 17:05:10 AEST mit der Zeit aktualisiert jede Sekunde. Gibt es einige Ergänzungen, die ich in der endgültigen Echo-Aussage machen muss? Oder etwas anderes tut

helfen bitte

Dank

+0

scheint, wie die Zeit auf dem Server ist von 4 Minuten von – colburton

+0

Ja, die 17.01.30 war die Zeit, als die ganze Seite neu geladen wurde, während die 17.05.10 das war Zeit, die durch das obige Skript generiert und jede Sekunde aktualisiert wird. Die letzte Codezeile möchte ich erreichen. Bitte helfen Sie dabei, wenn Sie können. – griffo42

Antwort

0

aktuelle Zeit zu zeigen, jede Sekunde kann man jquery verwenden, um Zeit zu zeigen, statt für jeden zweiten

Ajax auf dem Server ausgeführt werden

Versuchen Sie folgendes:

var nIntervId; 
 

 
function updateTime() { 
 
    nIntervId = setInterval(flashTime, 1000); 
 
} 
 

 
function pad(n) { return ("0" + n).slice(-2); } 
 

 
Number.prototype.pad = function (len) { 
 
    return (new Array(len+1).join("0") + this).slice(-len); 
 
} 
 

 
function flashTime() { 
 
    var now = new Date(); 
 
    var h = now.getHours().pad(2); 
 
    var m = now.getMinutes().pad(2); 
 
    var s = now.getSeconds().pad(2); 
 
    var time = h + ' : ' + m + ' : ' + s; 
 
    $('#my_box1').html(time); 
 
} 
 

 
$(function() { 
 
    updateTime(); 
 
}); 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script> 
 
<div id="my_box1"> 
 
    
 
</div>

0

Ich nehme an, Sie haben eine separate timer.php-Datei erstellt, um die Serverzeit zu simulieren. Da Ihre aktuelle Seite nur einmal geladen wird, wird die anfängliche Serverzeit nicht aktualisiert. Dies ist Ihr "aktueller Zeitwert". Während das verbleibende DOM wegen Ajax-Code mit der Serverzeit aktualisiert wird. Wenn beide Zeiten gleich sein sollen, müssen Sie die ganze Seite neu laden, was nicht korrekt ist. Daher schlage ich vor, dass Sie nur eine Zeit anzeigen, die Ihr Ajax-Ergebnis sein sollte. timer.php:

<?php 
date_default_timezone_set("Australia/Brisbane"); 
echo date("H:i:s"); 
?> 
+0

Danke. Was ich versuche zu erreichen, ist die Serverzeit zwischen "Aktuelle Zeit:" und "AEST" einzuschließen. Das habe ich mit der letzten Zeile meines Codes versucht, aber dieser Code gibt mir nicht das Ergebnis, das ich brauche. Bitte helfe, – griffo42

+0

Benutze Ajax für "AEST", also zeigt nun ein Ajax-Code deine Server-Zeit und einen weiteren Ajax-Code für "AEST" an, den du nach einiger Zeit wie nach 5 Sek. Ausführen möchtest. aber auf diese Weise wird der Wert immer einen Unterschied haben – user3423457