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

swi*_*ams 4 ajax jquery json couchdb

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

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

http://192.168.62.128:5984/articles/hot_dog
Run Code Online (Sandbox Code Playgroud)

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

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

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

网址绝对正确; 我已经三重检查,并直接复制/粘贴它(如果不是这样,它不会给出200响应).我正在使用jQuery 1.4.2和CouchDB 0.8

这是怎么回事?

jit*_*ter 5

尝试附加callback=?到这样的网址.这将触发jQuery发出jsonp请求.

var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog?callback=?';
Run Code Online (Sandbox Code Playgroud)

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


loo*_*omi 5

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

allow_jsonp = true

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

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

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