使用jsonp响应向couchdb添加数据

使用jsonp响应向couchdb添加数据,couchdb,jsonp,Couchdb,Jsonp,是否有一种方法可以将数据添加到在另一个域上运行的couchdb,并在操作成功与否时返回响应?我知道couchdb支持jsonp回调,但是我可以用这种方法添加数据吗 否,您当前无法执行此操作。CouchDB的RESTAPI需要POST或PUT请求才能插入数据,但JSONP只支持GET请求。因此,您可以跨域从CouchDB检索数据,但更新/插入/删除将不起作用。您可以使用客户端javascript制作表单来完成POST,将输出定向到iframe,并使用跨窗口iframe消息传递来获得结果 当然,有人

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

否,您当前无法执行此操作。CouchDB的RESTAPI需要POST或PUT请求才能插入数据,但JSONP只支持GET请求。因此,您可以跨域从CouchDB检索数据,但更新/插入/删除将不起作用。

您可以使用客户端javascript制作表单来完成POST,将输出定向到iframe,并使用跨窗口iframe消息传递来获得结果

当然,有人已经制作了一个很好的javascript库来实现这一点。在此处获取代码:

按照说明将其作为附加数据库推送到couchdb服务器上。然后,在任何站点上,包括一个不在“YourCoach服务器”域中的站点,您可以执行以下操作(只需在javascript控制台中尝试):

以上假设您已经在页面上加载了jquery。如果没有,您需要添加它,但是您当前正在与另一个页面交互

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

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);          
                    } 
                );
            }
        )
    }
);