我正在尝试使用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=?
我用来解析'data'以获取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]);
}
}
);
谁能说出我做错了什么? link text
答案 0 :(得分:6)
您的代码需要一些调整,这是更新版本:
$.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
做什么,但希望这会让你开始。 You can see the above code working here
答案 1 :(得分:3)
在这一行:
if(data.results[0]){
var data = filterData(data.results.place[0]);
}
您检查results[0]
是否存在但是您不使用它。我怀疑你的问题会通过更改为:
if(data.results[0]){
var data = filterData(data.results[0].place[0]);
}
答案 2 :(得分:3)
你有两个关键错误:
callback
而不是jsoncallback
data.query.results…
而不是data.results…
还值得注意的是,YQL结果返回了data.query.count
值,因此您可以看到返回了多少结果。
答案 3 :(得分:2)
我有一个问题:您是否可以访问该网址(http://query.yahooapis.com/..。),即使它不在您的域中?这不违反“同源政策”吗?