2012-10-21 61 views
0

我正在處理聊天室類型的事情,用戶在文本中輸入內容並按回車鍵並將其發佈到主頁面。我用PHP構建它。我有一個工作模型,但是要查看新帖子,您必須單擊瀏覽器中的刷新按鈕。有沒有辦法在JavaScript中自動刷新它?我確定有,但似乎是每兩秒更新一次,而不是非常緩慢和耗費資源。那麼是否有解決方法?如果不是,我想我們可以每隔幾秒刷新一次。在JavaScript中刷新聊天室

我現在是一名高級JavaScript用戶,因此請評論您的代碼並解釋我需要更改的內容。太感謝了!!

哦,PS,所有的註釋都保存在MySQL數據庫中,並通過PHP自動生成。

+2

使用AJAX。自動整頁刷新會丟棄用戶輸入的內容。 –

+2

自動刷新是一個可怕的想法。阿賈克斯是要走的路。 – romainberger

+1

不要只使用Ajax,使用一些推技術(-ies):WebSockets,ServerSentEvents,長輪詢... – Bergi

回答

1

是的,您可以每隔X秒刷新一次窗口,但正如您所提到的那樣,在這種情況下無需重新加載整個頁面。正如你所說的所有新的文本註釋都是在sql中,你可以做的就是使用AJAX調用一個PHP函數來在屏幕上直接更新它們,而不需要重新加載頁面。

setTimeout("updateChatAJAx()",2000); 

此javascript行將每2秒調用一次「updatechatAJAx」javascript函數。

//Load the message View 
    function updateChatAJAx(){ 
     var ajaxRequest; // The variable that makes Ajax possible! 
     ajaxRequest = new XMLHttpRequest(); 
     // Create a function that will receive data sent from the server 
     ajaxRequest.onreadystatechange = function(){ 
       if(ajaxRequest.readyState == 4){ 
         //The response 
         document.getElementById('MoreID').innerHTML = ajaxRequest.responseText; 
       } 
     } 
     ajaxRequest.open("GET", "getMessages.php", true); 
     ajaxRequest.send(null); 
} 

這上面的函數將成爲AJAX功能,將調用得到PF你getMessages.php輸出,並把消息進入「MoreID」 div組件

+1

永遠不要過關字符串設置爲'setTimeout' – Bergi

+0

設置更新功能以5秒的間隔工作,2秒的時間太少了 – Shoe

+0

這僅僅是一個例子 –