2012-11-19 52 views
1

可能重複:
Javascript auto update page?請刷新頁面只在特定區域

好......所以我試圖建立與PHP中的郵件系統和發來的郵件中我需要小數目>>>消息(0)< < <要更改爲新的數量而不重新加載整個頁面。這將是很好,如果我可以重新加載整個頁面的jQuery或什麼的,然後只是改變的東西會改變......這就是我真正想要的。

該數字來自數據庫中與登錄用戶相關的未讀消息數量。在圖像中,您可以看到新消息進入時數字顯示的位置,但是直到頁面加載完成纔會顯示數字......我需要它檢查至少2個不同位置的更改,並且每30秒運行一次查詢。 enter image description here

+3

聽起來像你需要使用[ajax](http://www.sitepoint.com/ajax-jquery/) –

+0

[** This **](http://stackoverflow.com/questions/9999112/javascript -auto-update-page)可能會有幫助。 –

+0

ajax或iframes – nkamm

回答

1

你需要AJAX,這裏有一個例子:

首先,當你加載頁面,你需要得到發送的消息的最後一個ID。

$lastID = SELECT MAX(id) AS `id` FROM `messages` WHERE `to` = . getLoggedUserId() 

然後,你需要傳遞的是阿賈克斯:

$(document).ready(function(){ 
    setInterval(function(){ 
     $.get("page.php?checkMessages&lastID=<?php echo $lastID; ?>", function(amount){ 
      if(amount > 0){ 
       $("span.newMessages").text(amount); 
      } 
     }) 
    },10*1000); // every 10 seconds 
}) 

page.php文件,你將有:

<?php 
    if(isset($_GET["checkMessages"])){ 
     $lastID = (int)$_GET["lastID"]; // just for security 
     $newMessages = 'SELECT COUNT(*) AS `amount` FROM `messages` WHERE `id` > ' . $lastID . ' AND `to` = ' . getLoggedUserId() 
     echo $newMessages; 
     exit; 
    } 
?> 

然後,每隔10秒,只有span與新消息的數量將被加載。