Как обойти "total_rows" при разборе JSON из CouchDB - PullRequest
2 голосов
/ 30 апреля 2011

Я использую следующий код jQuery для получения файла JSON из CouchDB.

Function getURL() {
   var api_url = 'http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key="favorite-flickr-photos"&?callback=?';

   $.getJSON(api_url, function(json) {
      var type = json.type;
      var desc = json.description;
      $("#dropBox h3").html(type);
      $("#dropBox p").html(desc);
   });
};

Когда я выполняю GET для этого URL, он возвращает следующее:

{"total_rows": 6, "offset": 5, "lines": [{"id":" f5ba37e5af406ab079d596f7a1f30a2d "," key ": ....]}

Firebug выдает мне следующую ошибку: недопустимая метка http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key=%22favorite-flickr-photos%22&?callback=jsonp1304111285023 Строка 1

Я не могу понятькак пройти через эту первую строку, чтобы добраться до фактического объекта JSON.Есть идеи?Спасибо.

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

? Callback =

Похоже, вы пытаетесь выполнить запрос JSONP, но:

{"total_rows": 6, ...

Это простой ответ JSON, а не вызов JSONP.Если вы не хотите выполнять междоменный запрос JSONP, избавьтесь от параметра callback и попросите jQuery проанализировать ответ как обычный JSON.

Если вам do необходимовыполняйте междоменные запросы JSONP, и вы понимаете риски безопасности, убедитесь, что вы используете актуальную версию CouchDB, и добавьте директиву:

allow_jsonp = true

в файл .ini враздел [http].

недопустимая метка

- это то, что вы получаете, когда пытаетесь выполнить / eval строку, содержащую объект JSON.Причудливость синтаксического анализа JS заключается в том, что "x" в {"x": "foo"} воспринимается как метка JavaScript (редко используется для операторов continue) в блоке операторов, а не как имя свойства объекта в литеральном выражении объекта.

jQuery будет использовать выполнение сценария вместо анализа JSON, когда он решит, что вы выполняете запрос JSONP.Наличие параметра 'callback =' в вашем URL волшебным образом заставляет его думать, что.

0 голосов
/ 30 апреля 2011
var key = json.rows[0].key;
var doctype = json.rows[0].value.doc_type;

и т. Д. И т. П. *

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