2012-10-27 31 views
7

我打算做這個評論系統,其中註釋可以發佈和無刷新頁面更新的(你可以看到這個在YouTube上)實時AJAX評論

發佈評論是可以理解的(後到PHP頁面由JavaScript和運行在服務器端的SQL查詢來導入,比返回的註釋和HTML獲取)

更新是我不理解的部分。如何在特定時間間隔內自動刷新頁面並添加評論?當多個用戶同時發表評論時,這不會是一團糟嗎?

我想知道如果任何人都可以推薦一個很好的方式(就像建議的話)來實現這一點,並節省了一些時間

回答

2

最常用的方法是調用的setTimeout或setInterval的JavaScript中輪詢每5 25秒。基本上,你存儲了你在javascript端收到的最後一條評論的想法,然後你調用一個函數將這個id發送到遠程服務器。如果有比這個ID更新的消息,你可以通過XML或JSON發回所有的消息(通常json在JavaScript方面更容易處理,特別是如果你使用像jQuery這樣的框架)。

+0

感謝,我可以試試這個 – Alexim

+2

JSON是可以沒有的jQuery非常容易處理,用'JSON.parse'。 –

+0

@FelixKling我沒有說任何相反的事情:)。 – ajacian81

1

可以使用的「長輪詢」。基本上,這是一種技術,您可以在其中打開Ajax連接,並在服務器有一些響應發送之前不關閉。客戶端收到此響應後會請求一個新的連接,並再次等待響應。

您可以檢查教程:Simple Long Polling Example with JavaScript and jQuery

1

另一個真正的好方法是使用訂閱/發佈服務。

我使用PubNub此刻的通知,評論等..

0

我曾經用一個簡單的技術(不使用定時器,總不刷新)有缺陷,它只顯示新的意見,但不編輯並刪除其他人對現有顯示的評論。請注意,如果您允許「展開/摺疊/查看更多」評論,那麼刷新整個評論面板可能是不可行的。我簡單的技術是有(我)來存儲最後一個註釋索引/ PrimaryKey的一個隱藏的輸入元素顯示出來(II)的幾個唯一標識的div保持現有顯示評論和Ajax刷新或HTML DOM操作只DIV時執行的操作在它上面(iii)一個div來保存更多的評論按鈕,只有當有更多評論可供查看時纔會顯示該按鈕。

因此,無論何時發佈新評論,「查看更多評論面板上的按鈕」都會被刷新爲查看[X +(#其他人最近發表的新評論)+(#您的新評論)]評論。點擊按鈕後,它將顯示3個新評論以及「查看更多評論」按鈕。