2013-10-09 141 views
1

假设我有一个从不同域返回的JSON对象,如下所示(这最初包含相当大的数据量,因此省略了不相关部分,同时保持其结构完整):使用jQuery .ajax函数从嵌套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的阿贾克斯功能的螺母和螺栓用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

你有没有尝试'console.log(data,typeof data);'确保你确实得到了回应? –

+0

“没有为Table yahoo.finance.quotes发现的定义”错误,我看到了。 – PSL

+0

使用雅虎API控制台首先测试您的YQL,同样的错误直接从yahoo API控制台返回,用于'select * from yahho.finance.quotes' http://developer.yahoo.com/yql/console/#h=选择+ * +从+ yahoo.finance.quotes –

回答

0

我认为你的问题是与环境有关。 Fdatatables.org不是有效的环境。

变化

env=http://Fdatatables.org/alltables.env&callback=? 

env=http://datatables.org/alltables.env&callback=? 

Fiddle

+0

就是这样!当我转换所有URL编码字符时,我一定错过了'F'字符。另一套新鲜的眼睛从不伤害,是吗? :) 谢谢。 – BinaryCat

+0

@ Vivendi75永远:) – PSL

0

你可能想试试这个:

success: function(data) { 
     console.log($.parseJSON(data).query.results.quote.symbol); 
} 

希望有所帮助。

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 

我试图说清楚格式化的缘故。实际的URL是

http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.quotes%20where%20symbol%20英寸%20( '歌')%20 &格式= JSON &诊断= TRUE & ENV = http://datatables.org/alltables.env