呼叫使用jQuery
问题描述:
一个JSON API响应我在JavaScript(和jQuery)新的,我想这样调用的API:呼叫使用jQuery
{"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);
};
});
});
我得到了这样的错误:“遗漏的类型错误:无法未定义读取属性‘0’”
任何人可以帮助我吗?
答
正如在评论中提到@nnnnnn,你可以这样做:
console.log(data[list[i]].PRICE);
为了解释:
list[i]
将在指数i
(如GOOGL
和TSLA
)返回存储在list
值。
存储在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);
不起作用,因为它正在寻找data
对象中的list
属性(它不存在)。
在这种情况下,你会看到Uncaught TypeError: Cannot read property '0' of undefined
时i
为零,因为data.list
不确定的收益(和代码试图从它那里得到财产0
)。
答
for (var i in list) {
console.log(data[list[i]].PRICE);
};
无法使用变量名使用点运算符访问对象的属性。
所以你必须使用数组符号..
答
@kevin:你不能用点运算符访问对象键,你必须通过哈希内部的关键,如“数据[名单[I] .PRICE“
'data [list [i]]。PRICE'。 – nnnnnn
这意味着'data.list'是未定义的,试着通过console.log(data)来检查'data'的内容是什么' – masterpreenz
@nnnnnn在list var中没有价格'var list = [“GOOGL” ,“TSLA”];'OP不太清楚他有'{“GOOGL”:{“PRICE”:950.123},“TSLA”:{“PRICE”:345.67}}'但是在循环中他使用'list ' – guradio