我将使用下面的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对象。有什么想法吗?谢谢。
2条答案
按热度按时间hi3rlvi21#
?回调=
看起来您正在尝试执行JSONP请求,但是:
{“总行数”:6,...
是一个普通的JSON响应而不是一个JSONP调用。如果你不想做一个跨域的JSONP请求,去掉
callback
参数,让jQuery把响应解析成普通的JSON。如果您 * 确实 * 需要执行跨域JSONP请求,并且您了解这样做的安全风险,请确保您使用的是最新的CouchDB版本,并添加指令:
到.ini文件的
[http]
部分。无效标签
当你试图执行/
eval
一个包含JSON对象的字符串时,你会得到这样的结果。这是JS解析的一个怪癖,{"x": "foo"}
中的"x"
被当作一个JavaScript“标签”(很少用于continue
语句)在一个语句块中,而不是一个对象文字表达式中的对象属性名称。当jQuery认为您正在执行JSONP请求时,它将使用脚本执行而不是JSON解析。在URL中使用'callback='参数会神奇地使它认为您正在执行JSONP请求。
j8ag8udp2#
诸如此类...