2013-07-28 27 views
0

我試圖環通的json objetcs的嵌套數組..JSON數組循環嵌套通不工作

這裏的循環:

 $("#test").text(""); 
     for(var i=0;i<obj.length;i++){ 
      $("#test").append(obj[i].line_item + ", "); 
      for(var j=0;j<obj[i].length;j++){ 
       $("#test").append(obj[i][j].iid + ", "); 
       $("#test").append(obj[i][j].name + ", "); 
       $("#test").append(obj[i][j].price + ", "); 
       $("#test").append(obj[i][j].lid + ", "); 
       $("#test").append(obj[i][j].picture + "<br />"); 
      }//for for 
     }//for 

的console.log我沒有顯示錯誤,當我回聲PHP腳本我得到這樣的輸出:

[{"line_item":"base","0": 
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images\/mix.jpg"}, 
"1":{"iid":"2","name":"green","price":"30","lid":"1","picture":"images\/green.jpg"}}] 

問題: 當我環路直通的陣列我只得到輸出:基地,在我的HTML文件。

我的問題:如何獲得內部數組對象?

回答

0

我猜你正在試圖做到這一點:

var a = []; 

$.each(obj, function(i, arr) { 
    a.push(arr.line_item); 
    $.each(arr, function(j, ob) { 
     if (typeof ob == 'object') { 
      $.each(ob, function(key,value) { 
       a.push(value) 
      }); 
     } 
    }); 
}); 

$("#test").text(a.join(', ')); 

FIDDLE

+0

這並獲得成功!多謝!現在想知道退出一段時間了! – Conjak

0

那是因爲你使用的是對象的不是一個數組,所以你不能做的:

obj[i].length 

一種簡單容易的方式來解決這個是把一個陣列裏面的物品,樣品JSON:

[{"line_item":"base", "items": [ 
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images\/mix.jpg"}, 
{"iid":"2","name":"green","price":"30","lid":"1","picture":"images\/green.jpg"}]}] 

您的代碼更改爲:

$("#test").text(""); 
for(var i=0;i<obj.length;i++){ 
    $("#test").append(obj[i].line_item + ", "); 
    for(var j=0;j<obj[i]['items'].length;j++){ 
    var item = obj[i]['items'][j]; 
    $("#test").append(item.iid + ", "); 
    $("#test").append(item.name + ", "); 
    $("#test").append(item.price + ", "); 
    $("#test").append(item.lid + ", "); 
    $("#test").append(item.picture + "<br />"); 
    }//for for 
}//for 
+0

也將考慮到這一點!謝謝! – Conjak