我使用以下 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/