通过ajax调用CouchDB时获得空响应

我是CouchDB的新手,所以请耐心等待。

我有一个在VM上运行的CouchDB实例。 我可以通过浏览器通过蒲团或直接访问它:

http://192.168.62.128:5984/articles/hot_dog 

在浏览器中调用该URL会返回正确的JSON。 但是,当我尝试通过ajax调用完全相同的URL时,我什么也得不到:

 var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog'; $.getJSON(ajaxUrl, null, function(data) { alert(data); }); 

查看Firebug的响应标头,向我显示HTTP响应为200content-length是正确的大小。 甚至Etag与CouchDB中的内容相匹配。 但回应本身是空的

url绝对正确; 我已经三重检查,并直接复制/粘贴它(除此之外它不会给出200响应)。 我正在使用jQuery 1.4.2和CouchDB 0.8

这是怎么回事?

听起来非常强烈,就像你试图制作跨域AJAX请求一样,浏览器会拒绝这一请求。 为了解决这个问题,您可以像上面的答案一样使用JSONP,但这会限制您使用GET请求; 您将无法添加,修改或删除记录。

如果您尝试使用CouchDB进行跨域AJAX调用,我建议您查看此库:

http://github.com/benvinegar/couchdb-xd

尝试追加callback=? 像这样的url。 这将触发jQuery发出jsonp请求。

 var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog?callback=?'; 

如果这不能另外修复它,你应该在浏览器中附加这个url给出的json的示例输出。

当您尝试从其他Web服务器获取数据时,您需要执行JSONP查询。 首先,在最新版本的CouchDB中,您需要在配置(.ini)文件中启用JSONP查询。 (默认情况下禁用,因为CouchDB 1.0)在[httpd]部分,你需要添加一个

allow_jsonp = true

完成此操作后,您可以在CouchDB上生成JSONP查询。

在jQuery中你必须添加?callback =? 到URL以触发JSONP查询。

快乐的跨源资源分享每个人。

首先这是一个json问题,你已经标记了jquery ……

如果你需要jquery那么…查找load()函数。

$( ‘#选择’)负载(ajaxURL); 警报($( ‘#选择’)。HTML())