jquery - 从 CouchDB 解析 JSON 时如何绕过 "total_rows"

标签 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);
   });
};

当我对该 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 文件。

invalid label

是当您尝试执行/eval包含 JSON 对象的字符串时得到的结果。 {"x": "foo"} 中的 "x" 被视为 JavaScript '标签'(很少用于 > continue 语句)在语句 block 中,而不是对象字面表达式中的对象属性名称。

当 jQuery 认为您正在执行 JSONP 请求时,它将使用脚本执行而不是 JSON 解析。在 URL 中添加“callback=”参数会神奇地让它这样认为。

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

相关文章:

javascript - 无法将数据从 Controller 读取到 View 中

javascript - 当我们在javascript中切换时如何显示文本?

indexing - 如何创建和维护 couchDB/pcouchDB doc _id

curl - CouchDB 查看多个键值对

javascript - 如何在Fauxton中使用reduce

mongodb - noSQL 和规范化数据

javascript - 鼠标悬停时如何更改标题的前面?

javascript - 单个滚动部分的动画

CouchDB 不会删除现有数据库

javascript - 为什么我的 jquery new Date() 函数会覆盖传入的参数?