2012-04-30 43 views
1

我試圖尋找一個解決方案,這和關閉數月,甚至還沒有接近的答案 - TBH我甚至不知道什麼關鍵字進行搜索時使用,我希望這裏的某個人有答案,或者至少可以指出我應該尋找的方向。jQuery的AJAX活飼料

在我的公司我已經建立了一個內聯網網頁,其中人們能問題增加(就像一個服務檯售票系統)。用戶可以在需要時將更新添加到這些問題中。因此,我有兩個數據庫表(其中包括) - 一個有問題,另一個有這些問題的更新。

我已經設置了一個網站,它使用jQuery的Ajax請求輪詢數據庫當前打開的所有問題,用戶的辦公桌已經和最新的更新(如果有的話)這一問題。根據用戶的喜好,這些按更新或打開的順序列出。

,每七秒這整個DIV與整個列表的刷新更新。因此,如果我在瀏覽器中某個問題的下半部分突出顯示某些文本,那麼每次更新時都會丟失該突出顯示。這個刷新在我的服務器上也有很大的負載 - 如果每個人的瀏覽器每7秒鐘刷新一次整個數據庫的內容,那麼在數據庫上會花費很多時間。

我希望做的是有瀏覽器只更新那些自上次刷新不同的項目。我已經設置它來更新用戶數據庫,當他們查看的時間是每7秒刷新一次的時候(如果他們正在查看頭版),那麼這個字段會得到一個新的unix時間戳。我還得到了有關問題和更新的創建時間以及有關問題的更新時間戳(當爲該問題創建新更新時,更新時間戳記將使用新的unix時間更新)。

這就是我所知道的facebook的新聞提要。每時每刻都有新帖子被添加到頂部,舊帖子的回覆被添加到他們的下面,新的喜歡和分享更新等等。如果我突出顯示一些文字在我的Facebook頁面上突出顯示不會丟失,這意味着Facebook僅更新Feed的部分而不是整個Feed本身。這就是我想要發生的事情。

你知道的任何教程如何做這樣的事情呢?或者如何搜索,因爲當我搜索Facebook類型新聞源系統時,我所得到的只是如何與Facebook的API接口!提前致謝。

回答

1

你可以嘗試尋找到推送技術:

Push Technology - Long Polling

Push技術,特別是長輪詢可以在這樣的情況下是有用的。這是電話應用程序在向用戶或訂戶傳輸新數據或更新時使用的概念。在這種情況下,與服務器的連接保持活動狀態。用戶的機器偶爾會向服務器查詢新信息。但是,如果有新信息提供給用戶,服務器只會回答響應。在這種情況下,您可以每7秒鐘輪詢服務器,但服務器不會響應或重新繪製div直到出現新信息。

只要更新div,您可以嘗試使用jquery .clone和.append選項在每個新項目中添加自己的跨度。

例如:

HTML: 
<span id="itemX"></span> 

On Ajax Success: 
var tile = $('#itemX').clone().attr('id','item1').text("Text returned from ajax call."); 
$('#divName').append(tile); 

這樣你可以從Ajax調用修改每一個新的項目,因爲它還是回到你身邊,並追加以下,而不會影響它上面的項目。

祝你好運。希望這可以幫助。