2013-08-21 323 views
-1

我的網站使用$ .getJSON(「filename.json」)從本地文件加載JSON對象。但是,我一直在解析這個對象時遇到困難。我經常收到一個「未定義」的控制檯日誌消息。 JSON文件中得到了驗證,我相信數組語法(如以下所列)是正確的訪問方法...JSON嵌套對象解析

var data = $.getJSON("summer.json"); 
console.log(data["ResponseJSON"]); 

http://imgur.com/A5YcF9t

+0

這是什麼在[文檔和示例](http://api.jquery.com/jQuery.getJSON/),讓你認爲代碼將工作?即使調用是同步的,但JavaScript區分大小寫,屬性名稱爲「responseJSON」,而不是「ResponseJSON」(並且調用幾乎肯定不是同步的)。 –

回答

2

您需要分配值和使用值這樣的回調函數。因爲數據是異步返回的。

如果您將console.log放在回調之外,它將在數據到達之前進行評估。

$.getJSON('summer.json', function(d) { 
    data = d; 
    console.log(data["ResponseJSON"]); 
}); 
+0

您還必須*使用*回調中的數據,或者從那裏調用並傳遞數據的函數。 – bfavaretto

+0

@bfavaretto當然。 – zsong

+0

是否有一個原因,數據必須在回調函數中使用(或從函數調用)? 例如,爲什麼不會 'var data; $ .getJSON('summer.json',function(d){ data = d; }); console.log(data [「ResponseJSON」]);' 函數是否正確? –