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

And*_*rle 7 jsonp couchdb

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

Mar*_*ell 10

不,你现在不能这样做.CouchDB的REST API需要POST或PUT请求才能插入数据,但JSONP仅支持GET请求.因此,您可以跨域检索 CouchDB中的数据,但更新/插入/删除将不起作用.


Sco*_*ith 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);          
                    } 
                );
            }
        )
    }
);
Run Code Online (Sandbox Code Playgroud)

以上假设你已经在页面上加载了jquery.如果没有,您需要添加它,但是您当前正在与其他页面进行交互.

该库仅适用于支持window.postMessage()的现代浏览器,尽管小补丁最终可能允许旧版浏览器通过src/hash通信使用它.