假设我有一个从不同域返回的JSON对象,如下所示(这最初包含相当大的数据量,所以我省略了不相关的部分,同时保持其结构完整):
{
"query": {
"count": 1,
"created": "2013-10-08T21:06:49Z",
"lang": "en-US",
"results": {
"quote": {
"symbol": "GOOG",
"Ask": "854.63",
"AverageDailyVolume": "1837530",
"PreviousClose": "865.74"
}
}
}
}
虽然我觉得使用JSON相当舒服,但我只是开始学习jQuery .ajax函数与JSON交互的细节。我写了非常基本的代码(下面),以确保我可以检索JSON对象并从中提取一个或多个值:
$.ajax({
type: "get",
cache: false,
dataType: "jsonp",
url: "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ('" + source + "') &format=json&diagnostics=true&env=http://Fdatatables.org/alltables.env&callback=?",
success: function(data) {
console.log(data.query.results.quote.symbol); // expected output is "GOOG"
}
});
当我在Firefox中运行上面的代码时,我在浏览器控制台中出现TypeError: data.query is undefined
错误。我注意到已经发布了几个类似于我在这里提出的问题,但没有找到足以解决这个问题的任何问题 - 至少从我的理解来看。
任何建议/提示将不胜感激。
答案 0 :(得分:0)
我认为你的问题与环境有关。 Fdatatables.org
不是有效的环境。
更改
env=http://Fdatatables.org/alltables.env&callback=?
到
env=http://datatables.org/alltables.env&callback=?
<强> Fiddle 强>
答案 1 :(得分:0)
您可能想尝试一下:
success: function(data) {
console.log($.parseJSON(data).query.results.quote.symbol);
}
希望有所帮助。
答案 2 :(得分:0)
将您的网址更改为:
http://query.yahooapis.com/v1/public/yql?
q=select * from yahoo.finance.quotes where symbol in
('GOOG')
&format=json
&diagnostics=true
&env=http://datatables.org/alltables.env
为了格式化,我试图说清楚。实际网址是
http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.quotes%20where%20symbol%20英寸%20( '歌')%20安培;格式= JSON&安培;诊断=真安培; ENV = http://datatables.org/alltables.env