2015-05-07 26 views
0

我目前有一個JS ajax腳本來從數據庫加載數據,其中查詢是在load.php 如何使自動加載新的內容分開根據服務器的時間和日期? 而不是整個數據庫表刷新每個「5秒」 但加載一次當前數據,然後基於服務器時間/日期的新數據。 這裏是我的腳本>使用Javascript/ajax基於服務器時間和日期加載新數據

+0

所以你想推動數據到javascript客戶端的權利?那麼也許你應該深入瞭解websocket技術......這是將數據從服務器推送到客戶端的唯一方法,以便客戶端不必進行輪詢,否則就有一種稱爲長輪詢的技術,您可以打開一個到來自javascript xhr的web服務器,連接長時間保持打開狀態,服務器可以在這段時間內將數據寫入客戶端...這會減少輪詢的頻率,但不是完整的解決方案 –

+0

您不需要JavaScript即可根據當前日期在頁面中加載新數據。 –

+0

我會如何處理它? 我的意思是我正在考慮去Ajax路線,但後來意識到它會刷新「所有表格數據」 – SARUAV

回答

0

不能啓動從服務器發送AJAX數據而無需客戶端(瀏覽器)的請求。因此,您應該使用第一個請求(瀏覽器請求頁面本身)來計算服務器上的時間偏移量(以PHP爲單位),並將​​函數放入setTimeout中,該函數將在幾秒鐘後執行。所以,你的PHP文件將是這個樣子:

$time = 4300 // or whatever, based on your server clock. 
echo '<script language="JavaScript"> 
     window.onload = function(){ 
     $("#feed").empty(); 

     /* if you want to execute it once at page load too:*/ 
     $("#feed").load("load.php"); 

     /* then load after $time milliseconds:*/ 
     setTimeout(function(){ 
      $("#feed").load("load.php"); 
     },'.$time.'); 
     } 
     </script>'; 

記住setTimeout的偏移應該是毫秒。

如果您有完整的服務器訪問權限(如套接字和內容),Websockets是解決您的問題的另一種解決方案。它們涉及基本上在腳本第一次執行時創建websocket連接,然後服務器和客戶端可以根據需要將消息發送給對方。這些消息可以包含您希望的數據。

+0

謝謝,指的是服務器時鐘,我怎樣才能找出我的是什麼?這是一個Ubuntu服務器,如果有幫助,並設置爲英國GMT – SARUAV

+0

PHP提供了localtime()和getdate()函數,如果設置,它將返回服務器(本地)時間。 _localtime_提供時間戳,而_getdate_提供數組。 Ref:[getdate](http://php.net/manual/en/function.getdate.php)&[localtime](http://php.net/manual/en/function.localtime.php) – Sidd

相關問題