2011-12-24 104 views
3

在我的索引頁面中,有一個div框顯示論壇上的最新帖子。 我希望它每10秒重新加載一次。x秒後重新加載內容

$(document).ready(function(){ 
    while(1==1) 
    { 
     $("#lastPosts").delay(10000).load("showLastPosts.php"); 
    } 
}); 

這是個好主意嗎?有更好的方法嗎?

+0

要加載哪裏正在讀取數據?你應該與服務器通信? – 2011-12-24 05:14:17

回答

3

嘗試setInterval代替:

$(document).ready(function(){ 
    setInterval(function() { 
     $("#lastPosts").load("showLastPosts.php"); 
    }, 10000); 
}); 

既然你加載遠程內容,你也應該考慮一種可能性,即Ajax調用可以回來以不同的順序(不太可能,因爲你的時間間隔爲10秒)。爲了防止這一點,你可以使用setTimeout和遞歸函數(如在MDN文章底部概述):

(function getLatestPosts(){ 
    setTimeout(function(){ 
     $("#latestPosts").load("showLastPosts.php", getLatestPosts);  
    }, 10000); 
})(); 
+1

擺脫'while'循環。你不想每次循環都產生一個新的定時器,是嗎? – Blender 2011-12-24 05:01:53

+0

@Blender:只是一個錯字 - 它已被刪除。 – 2011-12-24 05:02:48

0

我想你可以與服務器進行通信,以獲取最新信息加載到DIV。所以應該考慮使用ajax。

$(document).ready(function(){ 
    setInterval(function() { 
     $.ajax({ 
     type : 'GET' 
     url: 'showLastPosts.php', 
     datatype: 'html', 
     success: function(data){ 
      $("#lastPosts").html(data); 
      } 
     }); 
    }, 10000); 
}); 
+0

['.load'](http://api.jquery.com/load/)是'.ajax'的縮寫。 – 2011-12-24 05:27:14