使用jsonp响应将数据添加到couchdb

时间:2010-07-23 11:44:46

标签: couchdb jsonp

是否有办法将数据添加到另一个域上运行的couchdb,并获取操作是否成功的响应?我知道couchdb支持jsonp回调但是我可以用这种方法添加数据吗?

2 个答案:

答案 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通信使用它。