2013-12-08 26 views
0

我正在通過JSON檢索數據,但問題是我收到錯誤,因爲「無法讀取未定義的屬性'productid'。Jquery json:Uncaught TypeError:無法讀取未定義的屬性'xx'

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'。

+2

是否能重現上http://jsfiddle.net問題? – undefined

+0

爲什麼'eval'只能使用'parseInt'? – PhearOfRayne

回答

2

看起來您正在修改循環內產品列表。因此,仔細看一下設置cartItem的值。

for (var i = 0; i < data.Products.length; i++) { 
    ... 
    data.Products.push(cartItem); 
    } 

在迭代它時向列表中添加新項目是一個壞主意。取決於itemIDcartItem的設置方式,您可能會出現無限循環。 開始嘗試循環之前讀取.length值一次,所以新項目將不會被重複:

for (var i = 0, len = data.Products.length; i < len; i++) { 
    ... 
} 
+0

已注意。我修改了腳本。非常感謝你。 – Mauritius

相關問題