2013-10-09 186 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