我正在使用以下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给我以下错误:
标签无效
http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key=%22favorite-flickr-photos%22&?callback=jsonp1304111285023
1号线

我无法弄清楚如何越过第一行才能到达实际的JSON对象。有任何想法吗?谢谢。

最佳答案

?callback =


看来您正在尝试执行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 =”参数,使它想到了这一点。

关于jquery - 从CouchDB解析JSON时如何克服“total_rows”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5837476/

10-15 07:14