2017-06-02 9 views
-2

これまでに私のポストは、これがvannillaにこれを行う基本的に速いstackof'ersを求めていたものとは全く別の何かの複製としてフラグを立てた(私も見つかった...これはAjaxのレスポンスの質問ではありません...これはjQueryの問題ではありません...PHP、vanilla js、Ajaxを使用したカウントダウン深夜サーバー

を/ PHPの質問は、私のポストを台無しにし、私は有効な答えを持っていません私の質問の答えを見つけようとすると、私の自分の投稿がグーグルで1番目の結果)

Sample here

は基本的に私は、私はそれがローカルマシンサーバーの深夜にカウントダウンしていないにしようとしていますので、私はどこAjax呼び出しをした...

を完璧に動作JavaScriptで深夜のカウントダウンタイマーを作りました私echo getTime();と私はnow.getTime();

のJavascript/Ajaxの

 (function() { 
      var serverMilli = document.getElementById("serverMilli"); 
      var serverCountdown = document.getElementById("serverCountdown"); 

      var machineMilli = document.getElementById("machineMilli"); 
      var machineCountdown = document.getElementById("machineCountdown"); 

      let serverTime; 
      var http = new XMLHttpRequest(); 
      var url = "time.php"; 
      http.open("POST", url, true); 
      http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      http.onreadystatechange = function() { 
       if (http.readyState === 4 && http.status === 200) { 
        serverTime = this.responseText; 
        serverMilli.textContent = this.responseText; 
       } 
       ; 
      }; 
      http.send(); 

      function countDownServer() { 

       var now = new Date(); 
       var currentTime = serverTime - now.getTime(); 
       var eventDate = new Date(); 
       eventDate.setDate(now.getDate() + 1); 
       eventDate.setHours(24); 
       eventDate.setMinutes(0); 
       eventDate.setSeconds(0); 
       eventDate.setMilliseconds(0); 

       var eventTime = eventDate.getTime(); 
       var remainingTime = eventTime - currentTime; 

       var sekunder = Math.floor(remainingTime/1000); 
       var minutter = Math.floor(sekunder/60); 
       var timer = Math.floor(minutter/60); 

       sekunder %= 60; 
       minutter %= 60; 
       timer %= 24; 

       sekunder = (sekunder < 10) ? "0" + sekunder : sekunder; 
       minutter = (minutter < 10) ? "0" + minutter : minutter; 
       timer = (timer < 10) ? "0" + timer : timer; 

       var testServer = timer + ":" + minutter + ":" + sekunder; 
       serverCountdown.textContent = testServer; 
       setTimeout(countDownServer, 1000); 
      } 
      countDownServer(); 

      function countDownMachine() { 

       var now = new Date(); 
       var currentTime = now.getTime(); 
       machineMilli.textContent = currentTime; 
       var eventDate = new Date(); 
       eventDate.setDate(now.getDate() + 1); 
       eventDate.setHours(24); 
       eventDate.setMinutes(0); 
       eventDate.setSeconds(0); 
       eventDate.setMilliseconds(0); 

       var eventTime = eventDate.getTime(); 
       var remainingTime = eventTime - currentTime; 

       var sekunder = Math.floor(remainingTime/1000); 
       var minutter = Math.floor(sekunder/60); 
       var timer = Math.floor(minutter/60); 

       sekunder %= 60; 
       minutter %= 60; 
       timer %= 24; 

       sekunder = (sekunder < 10) ? "0" + sekunder : sekunder; 
       minutter = (minutter < 10) ? "0" + minutter : minutter; 
       timer = (timer < 10) ? "0" + timer : timer; 

       var testMachine = timer + ":" + minutter + ":" + sekunder; 
       machineCountdown.textContent = testMachine; 
       setTimeout(countDownMachine, 1000); 
      } 
      countDownMachine(); 
     })(); 
+0

このメソッドを使用すると、ajaxやサーバー側のコードを必要とせずにサーバー時間を受信できます。https://stackoverflow.com/questions/20269657/right-way-to-get-web-server-time-and – WheatBeak

+1

公開されている質問を自分自身から再投稿しないでください:https://stackoverflow.com/q/44229707/3270037、それを削除するか削除してください。両方と両方を残しておけば、あなたにとって問題が発生します。 –

+1

[サーバー/ローカル時間(Midnight countdown)をどのように異ならせるかを理解する]の可能性のある重複の可能性があります(https://stackoverflow.com/questions/44229707/cant-figure-out-how-to-differ-the-server-現地時間 - 深夜 - カウントダウン) – austensen

答えて

0

Aを使用した場合の内部でthis.responseTextを置くしようとしています私は時間()* 1000を返すために時間()* 1000を返すため、()はミリ秒を返します。

関連する問題