Получение пустого ответа при вызове CouchDB через ajax - PullRequest
4 голосов
/ 24 марта 2010

Я новичок в CouchDB, поэтому, пожалуйста, потерпите меня.

У меня есть экземпляр CouchDB, работающий на виртуальной машине. Я могу получить к нему доступ через браузер через футон или напрямую по адресу:

http://192.168.62.128:5984/articles/hot_dog

Вызов этого URL в браузере возвращает правильный JSON. Но когда я пытаюсь вызвать тот же URL через ajax, я ничего не получаю:

var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog';
$.getJSON(ajaxUrl, null, function(data) { alert(data); });

Просмотр заголовка ответа с помощью Firebug показывает, что ответ HTTP был 200, а content-length - правильный размер. Даже Etag соответствует тому, что есть в CouchDB. Но сам ответ пуст !

URL-адрес абсолютно правильный; Я трижды проверил и скопировал / вставил его напрямую (и, кроме того, он не дал бы 200 ответов, если бы не было). Я использую jQuery 1.4.2 и CouchDB 0.8

Что происходит?

Ответы [ 4 ]

5 голосов
/ 03 ноября 2010

Когда вы пытаетесь получить данные с другого веб-сервера в виде html-файла, вам нужно выполнить запрос JSONP . Прежде всего, в последней версии CouchDB вам необходимо включить запросы JSONP в файле конфигурации (.ini). (По умолчанию CouchDB 1.0 отключен). В разделе [httpd] необходимо добавить

allow_jsonp = true

После этого вы можете создавать запросы JSONP на вашей CouchDB.

В jQuery нужно добавить? Callback =? на URL для запуска запроса JSONP.

Счастливый источник кросс-источника, которым делятся все.

5 голосов
/ 24 марта 2010

Попробуйте добавить callback=? к URL, как это. Это заставит jQuery выдать запрос jsonp.

var ajaxUrl = 'http://192.168.62.128:5984/articles/hot_dog?callback=?';

Если это не помогает, вы должны добавить пример вывода JSON, который этот URL дает в браузере.

2 голосов
/ 23 июля 2010

Звучит очень сильно, как будто вы пытаетесь сделать междоменный запрос AJAX, который браузер отклонит. Чтобы обойти это, вы можете использовать JSONP, как ответ выше, но это ограничит вас GET-запросами; вы не сможете добавлять, изменять или удалять записи.

Если вы пытаетесь делать междоменные вызовы AJAX с CouchDB, я рекомендую проверить эту библиотеку:

http://github.com/benvinegar/couchdb-xd

0 голосов
/ 24 марта 2010

во-первых, это вопрос json, и вы пометили jquery ...

если вам нужен jquery, тогда ... посмотрите функцию load ().

$ ( '# селектор') нагрузки (ajaxURL). оповещения ($ ( '# селектор'). HTML ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...