2017-01-27 10 views
0

私は配列とajax関数を持っています。オブジェクトを配列に追加します。json各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未定義またはanythin後にあるのでしょうか? –

+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

私はsuccess: function(msgs)msgはABオブジェクトが、配列ではないと思います。

pipelinesも配列ではなく文字列です。そう、あなたが

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

を使用することができますpipelines[i]

を使用することはできませんか、私はあなたが

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を更新しました。入力ミスを申し訳ありません。 –

関連する問題