我在尝试访问字符串AFH(currencyId)时遇到错误。我得到的错误是“Uncaught TypeError:无法读取未定义的属性'大陆'”
以下是我尝试访问字符串的方法。
(1)在我向Json文件的端点发出ajax请求后,当ajax请求成功时,我将信息(数据)存储在变量named data下。
(2)这是错误的来源:
console.log(data.Continents[0].Countries[0].CurrencyId)
任何人都可以帮助我理解我所缺少的东西吗?
答案 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
会抛出该错误。