我是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中的内容匹配。但响应本身是空!
网址绝对正确;我已经三重检查,并直接复制/粘贴它(如果不是这样,它不会给出200响应)。我正在使用jQuery 1.4.2和CouchDB 0.8
发生了什么事?
答案 0 :(得分:5)
尝试将callback=?
添加到此类网址中。这将触发jQuery发出jsonp请求。
var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog?callback=?';
如果这不能另外修复它,你应该在浏览器中附加这个url给出的json的示例输出。
答案 1 :(得分:5)
当您尝试从其他Web服务器获取数据时,您需要执行JSONP查询。首先,在最新版本的CouchDB中,您需要在配置(.ini)文件中启用JSONP查询。 (默认情况下禁用,因为CouchDB 1.0)在[httpd]部分中,您需要添加
allow_jsonp = true
完成此操作后,您可以在CouchDB上生成JSONP查询。
在jQuery中你必须添加?callback =?到URL以触发JSONP查询。
快乐的跨源资源分享每个人。
答案 2 :(得分:2)
听起来非常强烈,就像您正在尝试制作跨域AJAX请求一样,浏览器会拒绝该请求。为了解决这个问题,您可以像上面的答案一样使用JSONP,但这会限制您使用GET请求;您将无法添加,修改或删除记录。
如果您尝试使用CouchDB进行跨域AJAX调用,我建议您查看此库:
答案 3 :(得分:-2)
首先这是一个json问题,你已经标记了jquery ......
如果你需要jquery那么...查找load()函数。
。$( '#选择')负载(ajaxURL); 警报($( '#选择器')。HTML())