是否有办法将数据添加到另一个域上运行的couchdb,并获取操作是否成功的响应?我知道couchdb支持jsonp回调但是我可以用这种方法添加数据吗?
答案 0 :(得分:10)
不,你现在不能这样做。 CouchDB的REST API需要POST或PUT请求才能插入数据,但JSONP仅支持GET请求。因此,您可以跨域从CouchDB检索数据,但更新/插入/删除将无效。
答案 1 :(得分:8)
您可以使用客户端javascript创建表单来执行POST,将输出定向到iframe,并使用跨窗口iframe消息传递来获取结果。
当然,有人已经制作了一个不错的javascript库来做到这一点。在这里获取代码: https://github.com/benvinegar/couchdb-xd
按照说明将其作为附属数据库推送到couchdb服务器上。然后,在任何网站上,包括一个不在“你的沙发服务器”域中的网站,你可以执行以下操作(只需在javascript控制台中试用):
jQuery.getScript(
"http://YOUR-COUCH-SERVER/couchdb-xd/_design/couchdb-xd/couchdb.js",
function() {
Couch.init(
function() {
var s = new Couch.Server('http://YOUR-COUCH-SERVER/');
var d = new Couch.Database(s,'YOURDB');
d.put(
"stackoverflow-test 1",
{ foo: 111, bar: 222 },
function(resp) {
console.log(resp);
}
);
}
)
}
);
以上假设您已经在页面上加载了jquery。如果没有,您需要添加它,但是您当前正在与其他页面进行交互。
该库仅适用于支持window.postMessage()的现代浏览器,但小补丁最终可能允许旧版浏览器通过src / hash通信使用它。