使用Ajax / jQuery从CouchDB读取连续提要

时间:2010-11-20 11:08:37

标签: jquery ajax couchdb jsonp

我想使用jQuery来监听来自CouchDB的持续更改 - 现在这可行:

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

这意味着每次有db更新时我都会获得一个新的json行 - 但是如何使用jQuery从这个URL读取更新?

我尝试过使用它,但它不起作用:

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

编辑:$ .ajax调用“success”函数并立即返回,它不会“轮询”更改..(下图中ajax列的时间轴列为16ms)

alt text

不,这不是一个跨域的ajax问题 - 我可以在fireBug中看到有一个具有正确数量的元素的响应

所以任何指导/建议都会受到赞赏 - 它不一定是jQuery - 简单的旧javscript也会这样做

2 个答案:

答案 0 :(得分:1)

在我的头脑中,我可以想到两个很好的方法来做到这一点。

  1. 使用计时器(即setTimeout();),每隔X秒在更改源上运行AJAX调用。您还将存储您收到的最后一个序列号,以便您可以告知更改源在下次轮询时从哪个序列号开始。这样可以防止重复数据并使响应变小。

  2. 根据您需要支持的浏览器,您可以使用EventSource API。这是一个jQuery实现:https://github.com/rwldrn/jquery.eventsource

答案 1 :(得分:0)

正如 Gjorgji Tashkovski 提到的 import numpy as np x = np.random.randint(0, 25, size = (1000, 10)) y = np.random.randint(0, 5, size = (1000, 1)) clf = xgb.XGBClassifier() x = xgb.DMatrix(x) y = xgb.DMatrix(y) clf.fit(x, y) ValueError: bad input shape () 用于服务器端,您可以将 feed=continuous 用于您的用例。

feed=longpoll

这个示例源代码来自这个现已归档的博客: https://web.archive.org/web/20170821130003/http://schinckel.net/2012/01/22/jquery-long-poll-for-couchdb-changes./