2017-01-27 28 views
0

我有一個數組和ajax函數。我將這些對象添加到數組中。jquery每個json對象什麼都不做

var names = []; 
... 
success: function(msg){ 
    for (var i in msg.response.pipelines){ 
     for (var j in msg.response.pipelines[i].statuses){ 
      names.push({ 
       pipeline: msg.response.pipelines[i].name, 
       item: msg.response.pipelines[i].statuses[j].name 
      }); 
     } 
    } 

然後我在控制檯中看到console.log(names)

Array of objects

然後我試圖讓 「項」 和陣列的 「管道」。

console.log(names.length); // give 0 
$.each(names, function (key) { 
     console.log('123'); 
     console.log(key.item + ' - ' + key.pipeline); 
    }) 

但我發現了什麼,就好像函數不存在...

+0

使用是有控制檯的任何錯誤或後123未定義或幹啥什麼? –

+1

你可以發佈'JSON',而不僅僅是圖像? – Ionut

+4

我不知道你是否試圖在請求執行之前處理'names'。 – Utkanos

回答

0

您需要使用與實際陣列關鍵在你的功能

$.each(names, function (key) { 
     console.log('123'); 
     console.log(names[key].item + ' - ' + names[key].pipeline); 
    }) 

應該工作。

或者你需要添加一個變量的值:

$.each(names, function (key, value) { 
     console.log('123'); 
     console.log(value.item + ' - ' + value.pipeline); 
    }) 
+0

'names.length = 0'因此它不會迭代 –

+0

是的,錯過了那一點。那大概是某種異步問題。 – adaliabooks

1

我覺得msgsuccess: function(msgs)不是AB對象,而是一個數組。

pipelines也不是數組而是字符串。所以你不能使用pipelines[i]

可以使用

for (var i in msg){ 
    console.log(msg[i].pipelines); 
} 

或我建議你喜歡

success: function(msg){ 

    $.each(msg, function(index, item) { 

      console.log(item) // this will be { "item" : "xxxx", "pipeline" : "xxxxxxxxxx"} 
      // Now check what you want to do 

    }); 
}); 
+0

缺少'$ .each()的參數' – charlietfl

+0

@charlietfl我更新了jsut。對不起,錯字。 –