使用JQuery-getJSON方法
我试图使用JQuery getJSON函数传递JSON数据。 REST查询是:使用JQuery-getJSON方法,jquery,json,getjson,Jquery,Json,Getjson,我试图使用JQuery getJSON函数传递JSON数据。 REST查询是: http://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22london%22&format=json&jsoncallback=? 我用来解析“数据”以获取WOEID值的脚本在下面似乎不起作用: $.getJSON("http://query.yah
http://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22london%22&format=json&jsoncallback=?
我用来解析“数据”以获取WOEID值的脚本在下面似乎不起作用:
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22"+
"london"+
"%22&format=json&jsoncallback=?",
function(data){
console.log("json: " + data);
var datatmp = data;
if(data.results[0]){
var data = filterData(data.results.place[0]);
}
}
);
谁能说我做错了什么?
在这一行中:
if(data.results[0]){
var data = filterData(data.results.place[0]);
}
检查结果[0]
是否存在,但不使用它。我怀疑您的问题将通过更改为以下方式得到解决:
if(data.results[0]){
var data = filterData(data.results[0].place[0]);
}
您的代码需要进行一些调整,以下是更新版本:
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22"+
"london"+
"%22&format=json&jsoncallback=json",
function(data){
if(data.query.results){
$.each(data.query.results.place, function(i, v) {
console.log("woeid #" + i + ": " + v["woeid"]);
});
}
});
results
对象位于query
下面,因此您需要首先进入该对象,上面的代码会遍历返回的第一个位置的woeid并向它们发出警告…这只是一个开始,不确定您最终想要对woeid
做什么,但希望这能让您开始 我有一个问题:你能访问那个URL(.)吗,即使它不在你的域中?这是否违反了“同一原产地政策”?您有两个关键错误:
callback
,而不是jsoncallback
data.query.results…
中找到,而不是data.results…
另外,值得注意的是,YQL结果返回了一个
data.query.count
值,这样您就可以看到返回了多少结果。那么我该如何与这个答案竞争呢?非常感谢。我感谢你的帮助。嗨,尼克,谢谢你的代码,它工作得很好,除了一些只返回一个woeid的情况。。??非常感谢,@nav-奇怪的是,他们在这种情况下改变了自己的结构,不管怎样,检查单个案例,如下:感谢Nick的单个案例:)奇怪的是,json响应在只返回一个结果时如何改变其结构!jQuery使用带有回调函数的JSONP,因此同源策略不是问题。jsoncallback
告诉jQuery您正在处理的是JSONP
,这部分是正确的。有关详细信息,请参阅文档:jsoncallback
特定于该页示例中使用的Flickr。YQL使用callback
。更正我之前的评论,jQuery正在查找callback=
。在任何情况下,json前缀(或任何前缀)都是可选的。您可以在这里看到相关的jQuery源代码:正如您在我的回答(单击示例链接)中所看到的,他的jsoncallback
可以工作,因为任何callback=
都在两端匹配:)