Jquery json:未捕获的类型错误:无法读取未定义的属性‘xx’
2013-12-08
3355
我正在通过 JSON 检索数据,但问题是我收到了错误,例如“无法读取未定义的属性‘productid’”。
JSON 文件 (data.json)
{
"Products": [
{
"productid": "135",
"productname": "Shirt",
"productqty": "3",
"seller_3": "150.00",
"seller_2": "151.00",
"seller_7": "153.00",
"seller_6": "159.00",
"seller_5": "155.00",
"seller_1": "157.00",
"seller_4": "152.00"
}
]
}
执行代码为
var itemQty = 134;
$.getJSON( "../data.json", function(data) {
if (data.Products.length == 0) {
/*do nothing*/
} else if(data.Products.length > 0){
for (var i = 0; i < data.Products.length; i++) {
console.log(data.Products[i].productid); // ITS RETURN THE VALUE 135
if (data.Products[i].productid == itemID) { // <--- ERROR THIS LINE
if (data.Products[i].productqty == itemQty) {
newQuantity = eval(data.Products[i].productqty);
} else {
var newQuantity = eval(itemQty);
}
if (newQuantity > options.quantityLimit) {
newQuantity = options.quantityLimit
}
data.Products[i].productqty = newQuantity;
} else {
data.Products.push(cartItem);
}
}
}
}
在 console.log 中,它返回值为 135,而在 IF 语句中进行比较时,我收到了错误“无法读取未定义的属性‘productid’”。
1个回答
看起来您正在从循环内部修改产品列表。因此,请仔细查看设置
cartItem
值的内容。
for (var i = 0; i < data.Products.length; i++) {
...
data.Products.push(cartItem);
}
在迭代列表时向列表添加新项目是个坏主意。您可能会遇到无限循环,具体取决于
itemID
和
cartItem
的设置方式。
尝试在开始循环之前读取一次
.length
值,这样就不会迭代新项目:
for (var i = 0, len = data.Products.length; i < len; i++) {
...
}
Ryan953
2013-12-08