尝试从json获取String值时出错

时间:2017-05-02 22:36:11

标签: javascript jquery json ajax

我在尝试访问字符串AFH(currencyId)时遇到错误。我得到的错误是“Uncaught TypeError:无法读取未定义的属性'大陆'” JSON

以下是我尝试访问字符串的方法。

(1)在我向Json文件的端点发出ajax请求后,当ajax请求成功时,我将信息(数据)存储在变量named data下。

(2)这是错误的来源:

console.log(data.Continents[0].Countries[0].CurrencyId)

任何人都可以帮助我理解我所缺少的东西吗?

3 个答案:

答案 0 :(得分:2)

Countries[0]

之间有空格
console.log(data.Continents[0].Countries [0].CurrencyId)

应该是

console.log(data.Continents[0].Countries[0].CurrencyId)

答案 1 :(得分:1)

最可能的罪魁祸首是AJAX的A.假设您的代码看起来像这样(使用jQuery简洁):

var data;
$.get('/endpoint.json', function(response) {
  data = response;
});
console.log(data.Continents[0].Countries[0].CurrencyId);

在这个简单的例子中,正在定义数据变量,但只有在AJAX请求完成之后,因为AJAX请求是异步的,所以console.log()会立即执行(在实际定义数据变量之前)。这似乎是违反直觉的,因为当您将光标向下移动到JS控制台时,data变量将被定义,然后可以记录。这个问题的显而易见的解决方案是将您的console.log移动到成功回调中,或者定义一个使用您的数据并从ajax成功回调中调用它的单独函数。

答案 2 :(得分:0)

您需要发布更多代码。当然console.log(data.Continents[0].Countries[0].CurrencyId)可能会抛出实际错误,但很可能是因为之前的行没有按照他们应该做的那样做。很可能您执行ajax请求的代码没有正常运行,因此data实际上并没有填充JSON,而是留下undefined会抛出该错误。