我是Javascript和JQuery的新手,我一直在尝试不同的方式来拉动和操纵雅虎财务数据,并决定使用jquery。我的第一个基本尝试就是:
$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20Name%2C%20LastTradePriceOnly%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22RHT%22%29&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env" + "?callback=?", function(json) {
var lastprice = json[0].results.quote.LastTradePriceOnly
console.log(lastprice)
它没有用,错误控制台没有任何帮助。我在这里搜索并发现了这个问题: load json into variable并且在考虑可能尚未收到来自雅虎的回复之后尝试了这个:
var json = (function () {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "http://query.yahooapis.com/v1/public/yql?q=select%20Name%2C%20LastTradePriceOnly%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22RHT%22%29&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env",
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
var lastprice = json.results.quote.LastTradePriceOnly
console.log(lastprice)
});
这也不对。我觉得我很亲密。任何帮助将不胜感激
答案 0 :(得分:2)
删除url的回调,然后从查询中获得以下JSON结果,该结果不是数组而是对象。
{
"query":{
"count":1,
"created":"2012-10-26T19:00:18Z",
"lang":"en-US",
"results":{
"quote":{
"LastTradePriceOnly":"50.26",
"Name":"Red Hat, Inc. Com"
}
}
}
}
您应该按以下方式访问其数据:
var lastprice = json.query.results.quote.LastTradePriceOnly;
以下是修改过的代码的工作演示:DEMO。
编辑(警告)
我正在测试该调用,我发现有时来自具有相同URL的服务的结果会返回以下错误:
{
"error":{
"lang":"en-US",
"description":"No definition found for Table yahoo.finance.quotes"
}
}
答案 1 :(得分:0)
数据将以这种格式返回:
{"query":
{"count":1,"created":"2012-10-26T19:00:42Z","lang":"en-US","results":
{"quote":
{"LastTradePriceOnly":"50.28","Name":"Red Hat, Inc. Com"}}}}
所以你必须遍历你回来的对象: data.query.results.quote.LastTradePriceOnly
> $.ajax({
> 'async': false,
> 'global': false,
> 'url': "http://query.yahooapis.com/v1/public/yql?q=select%20Name%2C%20LastTradePriceOnly%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22RHT%22%29&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?",
> 'dataType': "json",
> 'success': function (data) {
> alert(data.query.results.quote.LastTradePriceOnly);
> }
> });
这是一个演示它的jsfiddle: http://jsfiddle.net/erick382/Qghtu/