从CouchDB解析JSON时如何通过“total_rows”

时间:2011-04-29 21:16:50

标签: jquery couchdb

我正在使用以下jQuery代码从CouchDB获取JSON文件。

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时,它会提供以下内容:

{ “TOTAL_ROWS”:6, “偏移”:5 “行”:[ { “ID”: “f5ba37e5af406ab079d596f7a1f30a2d”, “重点”:.... ]}

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 个答案:

答案 0 :(得分:5)

  

?回调=

看起来您正在尝试执行JSONP请求,但是:

  

{“total_rows”:6,...

是一个普通的JSON响应而不是JSONP调用。如果您不打算执行跨域JSONP请求,请删除callback参数并让jQuery将响应解析为普通JSON。

如果你需要做跨域JSONP请求,并且你了解它的安全风险,请确保你使用的是最新的CouchDB版本并添加指令:

allow_jsonp = true

[http]部分的.ini文件。

  

无效标签

是您尝试执行/ eval包含JSON对象的字符串时获得的。这是JS解析的一个怪癖,"x"中的{"x": "foo"}被视为语句块中的JavaScript'标签'(很少用于continue语句),而不是对象属性名称在对象文字表达式中。

jQuery在认为您正在执行JSONP请求时将使用脚本执行而不是JSON解析。在你的网址中使用'callback ='参数会让人想到这一点。

答案 1 :(得分:0)

var key = json.rows[0].key;
var doctype = json.rows[0].value.doc_type;

等等......