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

ki0zmccv  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(101)

我将使用下面的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);
   });
};

当我对该URL执行GET时,它返回以下内容:

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

Firebug给出了以下错误:第1行标签http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key=%22favorite-flickr-photos%22&?callback=jsonp1304111285023无效
我不知道如何通过第一行到达实际的JSON对象。有什么想法吗?谢谢。

hi3rlvi2

hi3rlvi21#

?回调=
看起来您正在尝试执行JSONP请求,但是:
{“总行数”:6,...
是一个普通的JSON响应而不是一个JSONP调用。如果你不想做一个跨域的JSONP请求,去掉callback参数,让jQuery把响应解析成普通的JSON。
如果您 * 确实 * 需要执行跨域JSONP请求,并且您了解这样做的安全风险,请确保您使用的是最新的CouchDB版本,并添加指令:

allow_jsonp = true

到.ini文件的[http]部分。
无效标签
当你试图执行/eval一个包含JSON对象的字符串时,你会得到这样的结果。这是JS解析的一个怪癖,{"x": "foo"}中的"x"被当作一个JavaScript“标签”(很少用于continue语句)在一个语句块中,而不是一个对象文字表达式中的对象属性名称。
当jQuery认为您正在执行JSONP请求时,它将使用脚本执行而不是JSON解析。在URL中使用'callback='参数会神奇地使它认为您正在执行JSONP请求。

j8ag8udp

j8ag8udp2#

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

诸如此类...

相关问题