Javascript 使用jQuery调用JSON响应API
我是javascript(和jquery)新手,我想调用如下api:Javascript 使用jQuery调用JSON响应API,javascript,jquery,json,Javascript,Jquery,Json,我是javascript(和jquery)新手,我想调用如下api: {"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}} 我尝试使用我的代码,但没有成功: var list = ["GOOGL","TSLA"]; $( document ).ready(function() { $.getJSON('api.json', function(data) { for (var i in list) {
{"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}}
我尝试使用我的代码,但没有成功:
var list = ["GOOGL","TSLA"];
$( document ).ready(function() {
$.getJSON('api.json', function(data) {
for (var i in list) {
console.log(data.list[i].PRICE);
};
});
});
我遇到如下错误:“Uncaught TypeError:无法读取未定义的属性“0”
有人能帮我吗?如评论中所述,您可以:
console.log(data[list[i]].PRICE);
解释:
list[i]
将返回存储在list
索引i
处的值(如GOOGL
和TSLA
)
存储在data
({“GOOGL”:{“PRICE”:950.123},“TSLA”:{“PRICE”:345.67}
)中的值似乎使用list[i]
(GOOGL
和TSLA
)的值作为键
这意味着执行data[“GOOGL”]
(使用data[list[i]]
)将获得{“PRICE”:950.123}
然后再进行另一步
data[“GOOGL”].PRICE
(使用data[list[i]].PRICE
)将获得950.123
而console.log(data.list[i].PRICE)代码>不起作用,因为它正在数据
对象中查找列表
属性(该属性不存在)
在这种情况下,您将看到未捕获类型错误:当i
为零时,无法读取未定义的属性“0”,因为数据。list
返回未定义(并且代码正试图从中获取属性0
)。如注释中所述,您可以执行以下操作:
console.log(data[list[i]].PRICE);
解释:
list[i]
将返回存储在list
索引i
处的值(如GOOGL
和TSLA
)
存储在data
({“GOOGL”:{“PRICE”:950.123},“TSLA”:{“PRICE”:345.67}
)中的值似乎使用list[i]
(GOOGL
和TSLA
)的值作为键
这意味着执行data[“GOOGL”]
(使用data[list[i]]
)将获得{“PRICE”:950.123}
然后再进行另一步data[“GOOGL”].PRICE
(使用data[list[i]].PRICE
)将获得950.123
而console.log(data.list[i].PRICE)代码>不起作用,因为它正在数据
对象中查找列表
属性(该属性不存在)
在这种情况下,您将看到未捕获类型错误:当i
为零时,无法读取未定义的属性“0”,因为data.list
返回未定义(并且代码正试图从中获取属性0
)
使用点运算符无法使用变量名访问对象的属性
所以你必须使用数组符号
使用点运算符无法使用变量名访问对象的属性
因此,你必须使用数组表示法。@kevin:你不能使用点运算符访问对象键,因为你必须在散列中传递该键,如“data[list[i].”PRICE“@kevin:你不能使用点运算符访问对象键,因为你必须在散列中传递该键,如“data[list[i].PRICE”data[list[i]].PRICE
。这意味着数据.list
未定义,请尝试通过控制台检查数据的内容。log(data)
@nnnnnn在list var中没有PRICEvar list=[“GOOGL”,“TSLA”]代码>OP不太清楚他有{“GOOGL”:{“PRICE”:950.123},“TSLA”:{“PRICE”:345.67}
,但在循环中他使用的是列表
@guradio-在列表
中没有价格
,但在数据[list[i]
中有价格
。也就是说,对于列表中的每个项目
,其价格可以从数据
中检索。(当然,如果列表
包含不在数据
中的项,这仍然有“未定义”错误的风险)您认为列表的索引(即i
将是什么,0,1
)与data.list的内容有何关系?我想你的意思是对于(我的列表)
所以我是“GOOGL”
然后“TSLA”
数据[list[I]].PRICE
。它的意思是数据。list
未定义,请尝试通过控制台检查数据的内容。log(data)
@nnnnnn在list var中没有PRICEvar list=[“GOOGL”,“TSLA”]代码>OP不太清楚他有{“GOOGL”:{“PRICE”:950.123},“TSLA”:{“PRICE”:345.67}
,但在循环中他使用的是列表
@guradio-在列表
中没有价格
,但在数据[list[i]
中有价格
。也就是说,对于列表中的每个项目
,其价格可以从数据
中检索。(当然,如果列表
包含不在数据
中的项,这仍然有“未定义”错误的风险)您认为列表的索引(即i
将是什么,0,1
)与data.list的内容有何关系?我想你的意思是(我的名单)
所以我是“GOOGL”
然后“TSLA”