2013-08-21 258 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”]);' 函数是否正确? –