2009-09-07 15 views
0

是否有jQuery彈出一條消息給用戶,他們所在的數據庫記錄已被更改,並且他們需要刷新以獲取更改?因此,基本上,如果他們正在查看記錄,走開然後回來,在那裏向用戶顯示一條消息,指出您正在查看的記錄已更改 - 請刷新。表明記錄已被更改的jQuery消息

謝謝。

回答

3

當然,這個網站做到了。

它是如何工作的大致:

  1. 使用setInterval$.ajax(),客戶端輪詢後端腳本以往X秒。
  2. 後端腳本檢查數據庫並返回某種數據 - 在這種情況下,JSON可能更可取 - 指示是否
  3. 在客戶端,JavaScript解析來自服務器的響應並作出相應處理。

一些注意事項:

  • 如果有任何形式的流量,這有可能帶來一個服務器癱瘓的能力。確定輪詢頻率時要格外小心。
  • 我建議限制腳本能夠輪詢服務器的每頁加載的總次數(例如20次後腳本停止輪詢)。這樣,例如,當用戶離開瀏覽器中加載的頁面並離開時,您不會浪費週期。

或者,您可以看看Comet,這在技術上更困難並且需要大量服務器設置/系統管理員類型知識才能正常工作。

0

是的,這是可能的,但也有很多部分,你將需要:

首先,一些服務器端代碼,可以檢查記錄是否已經更新。如果沒有關於你所工作的環境的更多信息,我無法給你提供任何關於此步驟的信息。

其次,你需要使用jQuery's ajax features來每隔一段時間從頁面發送一個ajax請求。在該ajax請求的回調函數中,您可以檢查ajax響應是否表示記錄已更新。

第三,您只需決定如何讓用戶知道記錄已更改。你可以簡單地在頁面上的某個地方插入一些文本,或者你可以想象並創建一些對話框讓他們知道。或者,如果你願意,你甚至可以爲他們刷新頁面,而不是告訴他們它已經更新。

事情是這樣的:

function checkForUpdates() { 
    $.getJSON('/theUrlForUpdateChecker', { record_id: 23 }, function(json) { 
     if (json.isRecordUpdated) { 
      var message = 'The record has been updated, please refresh the page'; 
      $('#notificationArea').text(message); 
     } 
    }); 
} 

//execute it every 60 seconds (60000 milliseconds): 
setInterval(checkForUpdates, 60000); 

我用的setInterval爲了簡單,但是對於節約資源的利益,你可能會想一遍又一遍的setTimeout使用,並停止檢查更新,一旦你知道的記錄是更新。