2010-11-20 83 views
5

從CouchDB的連續進我想監聽使用jQuery從CouchDB的不斷變化 - 現在這個工程:閱讀使用Ajax/jQuery的

http://localhost:5984/testdb/_changes?feed=continuous 

這意味着我得到JSON的新行每次有時間數據庫更新 - 但如何使用jQuery從此URL讀取更新?

我試圖用這個,但它不工作:

$.ajax(
{ 
    url : "http://localhost:5984/testdb/_changes?feed=continuous&callback=?", 
    dataType : 'json', 
    success : function(data) 
    { 
    alert(data.results.length); 
    } 
}); 

編輯:$就所謂的「成功」的功能,並立即返回,它沒有「民意調查」更改.. (用於在圖像AJAX柱的時間表列下面是16毫秒)

alt text

沒有,它不是一個跨域Ajax問題 - I可以看到螢火存在與元件的右側號碼的響應

所以任何指導/建議,將不勝感激 - 它並不必須是jQuery的 - 普通的老javscript會做以及

+2

'feed = continuous'旨在用於服務器端。在瀏覽器中,使用'feed = longpoll' – 2011-07-01 20:37:55

回答

1

關閉我的頭頂,我能想到的兩個很好的方法可以做到這。

  1. 使用計時器(即,setTimeout();),在進料的變化每X秒運行AJAX調用。您還將存儲您收到的最後一個序列號,以便您可以告訴更改在下次您輪詢時開始的序列號。這將防止重複數據並使響應更小。

  2. 根據您需要支持的瀏覽器,您可能可以使用EventSource API。這是一個jQuery實現:https://github.com/rwldrn/jquery.eventsource

+0

感謝Sam - 我正在做1.現在......但我想使用連續的提要方法 - 我不能使用2,我需要支持儘可能多的瀏覽器儘可能的 – sami 2010-11-21 19:44:08

+0

所以,這對HTTP來說通常是「不可能的」,因爲它是一種無狀態協議。但是,請查看http://en.wikipedia.org/wiki/Comet_(programming)瞭解它的方法。你現在正在做的是這些方法之一。 – 2010-11-22 01:31:17

+0

是的,彗星是正確的 - 感謝指出 - 如果我設法編寫代碼來處理這個,我會在這裏發佈 – sami 2010-11-22 09:52:23