通过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响应为200
, content-length
是正确的大小。 甚至Etag
与CouchDB中的内容相匹配。 但回应本身是空的 !
url绝对正确; 我已经三重检查,并直接复制/粘贴它(除此之外它不会给出200响应)。 我正在使用jQuery 1.4.2和CouchDB 0.8
这是怎么回事?
听起来非常强烈,就像你试图制作跨域AJAX请求一样,浏览器会拒绝这一请求。 为了解决这个问题,您可以像上面的答案一样使用JSONP,但这会限制您使用GET请求; 您将无法添加,修改或删除记录。
如果您尝试使用CouchDB进行跨域AJAX调用,我建议您查看此库:
尝试追加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())