我正在使用以下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对象。有任何想法吗?感谢。
答案 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;
等等......