2010-07-23 3 views
7

Есть ли способ добавить данные на couchdb, который работает в другом домене, и вернуть ответ, была ли операция успешной или нет? Я знаю, что couchdb поддерживает обратный вызов jsonp, но могу ли я добавить данные с этим подходом?Добавить данные в couchdb с ответом jsonp

ответ

10

Нет, вы не можете сейчас это сделать. Для REST API CouchDB требуется запрос POST или PUT для вставки данных, но JSONP поддерживает только запросы GET. Таким образом, вы можете получить данные от CouchDB по доменам, но обновления/вставки/удаления не будут работать.

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 связь.