2015-07-11 29 views
1

我只想知道如何在不刷新頁面的情況下發布數據,例如現在Facebook在發佈評論時將發佈並向用戶顯示而不刷新頁面。我知道如何在沒有使用AJAX刷新頁面的情況下在MySQL中插入數據,但問題是:如何在不刷新頁面的情況下同時插入數據並獲取數據。動態發佈數據而不刷新頁面

謝謝你

+0

看看websockets或webhooks,你應該能夠完成你想要的任何一個。 – dmlittle

回答

-1

這就是所有的JavaScript(或jQuery)。您已經知道如何將數據發送到您的服務器。現在,您只需使用javascript修改html即可。 例如(jQuery的):

$("#submit").click(function(){ 
$("#comments").append("<div class=newcomment>"+$("#textbox").val()+"</div>"); 
$.POST('upload.php',{comments:$("#textbox").val()}); 
}); 

現在的評論是發送到upload.php的和註釋添加到您的頁面的註釋部分。 如果您還需要包含服務器的數據,只需在upload.php文件中添加一些javascript,並執行如下操作:$("#getdatefromserver").load('upload.php',{comments:$("#textbox").val()});現在,upload.php中的javascript將在頁面中運行。

並沒有頁面刷新完成。

1

OSDM的答案可能看起來完成了你想要的行爲,但它不是你問的那個。他的回答只會在用戶上傳某些內容時提供更新,而不是在系統中創建(上傳)。

有兩種不同的方式可以完成服務器中新信息的獲取:AJAX和WebSockets。

AJAX - AJAX代表異步Javascript和XML。它允許您使用場景後面的特定服務器獲取內容,然後可以將新提取的數據插入到頁面中以將其顯示給用戶。然而,這必須手動觸發,因此在實時中並不真正發生。您可以手動(例如按下按鈕)或定時器(例如每5秒鐘,10分鐘等)觸發數據的提取。需要注意的是,服務器很難知道該頁面當前正在顯示哪些信息,因此每個AJAX調用通常會請求顯示所有信息並重新渲染頁面(刪除當前內容並插入新提取的還包括已經顯示的內容)。

WebSockets - WebSockets可以被認爲是'升級'的HTTP連接。客戶端和服務器建立連接並可以自由地向任一方向發送數據。您可以在服務器和網站(客戶端)之間設置網絡套接字,以便無論何時將新內容插入到MySQL數據庫中,服務器都會將新內容中繼到客戶端。就像AJAX一樣,您可以解釋新信息並將其添加到頁面中。使用網絡套接字的好處是,當服務器接收到信息時,信息將實時提供給您。這意味着您只需在首次加載站點時批量獲取數據,並在發生更新時將更新推送給您。您不需要依賴定時器或手動輸入來獲取數據,因爲您正在提供數據而不是提取數據。例如,Facebook不依賴計時器或獲取新數據(儘管如果刷新頁面肯定會發生這種情況),但每個客戶端都正在通過Web套接字監聽服務器的新信息。