我正在开发一个简单的PHP应用程序,使用CouchDB和PHP-on-Couch来访问一些视图,它运行得很好。我的下一步是引入Ajax,用数据库中的数据更新前端。
我知道您可以很容易地使用_changes通知来检测数据库上的任何更改。因此,这是一个index.html监视更改的问题(通过长轮询),它调用loadView.php来更新页面内容。
,首先,,我希望以上是正确的方法。
其次是,当浏览到index.html时,页面似乎从未完全加载(页面加载栏从未完成)。进行更改时,Firebug将显示预期的结果,但不会显示后续的任何更改。此时,页面似乎已经停止了无限加载。
到目前为止,我正在使用jQuery进行Ajax调用..。
$.getJSON('http://localhost:5984/db?callback=?', function(db) {
console.log(db.update_seq);
$.getJSON('http://localhost:5984/db/_changes?since='+db.update_seq+'&feed=continuous&callback=?', function(changes) {
console.log(changes);
});
});知道这里会发生什么事吗?
发布于 2011-07-01 02:55:25
我相信答案很简单。
长轮询查询是AJAX,保证只响应一次,比如获取HTML或图像。在等待更改时,可能需要一段时间才能做出响应;或者,如果已经发生更改,则可能会立即回复。
连续查询是COMET。它永远不会“完成”HTTP回复,它将永远保持连接打开(除了错误、崩溃等)。每次变化发生,放大,库奇发送给你。
换句话说,尝试将feed=longpoll更改为feed=continuous,看看这是否解决了问题。
作为背景,我建议使用CouchDB关于变更通知的权威指南,当然还有优秀的Couchbase单服务器更改API文档。
https://stackoverflow.com/questions/6530737
复制相似问题