2017-08-30 17 views
0

これは私が現在行っていることです。私はjsonの値をリンク配列にプッシュしてみましたが、配列を入力すると値はundefinedになります。データを移動して、それをまだ使用可能にする良い方法は何ですか?このコードを使用してからJSONオブジェクトからmyリスト配列を追加する

var links = []; 
$.ajax({ 
    url: 'data.json', 
    dataType: 'json', 
    type: 'get', 
    cache: false, 
    success: function(data) { 
    $(data.emails).each(function(index, value) { 
     links.push(value); 
    }); 
    } 
}); 

//data.json contains: 
{ 
    "emails": [{ 
    "source": "[email protected]", 
    "target": "[email protected]" 
    }] 
} 

結果は同じです。値は、配列を入力しますが、リンクを介してそれらにアクセスするとき。(値の名前)が返す「未定義」

$.each(data.emails, function(index, value) { 
     links.push(value); 
     console.log(links); 
     return value; 
    }); 

Result

+0

を試してみてください? – Sletheren

+0

本当の質問はどこに戻りますか、 'links'配列をどこでチェックするのですか?その配列に' target'プロパティがあるのはなぜですか? – adeneo

+0

'links'配列をどこで確認していますか? AJAXリクエストは非同期であることに注意してください。 –

答えて

0

"データ" の内側にあるものをこの

<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>   
<script type="text/javascript"> 
//alert("data"); 
var links = []; 
    $.ajax({ 
     url: 'test1.php', 
     type: 'post', 
     dataType: 'json', 
     data: { 

     } 
     }).done(function(data) { 
     $.each(data.emails, function(index, value) { 
     links.push(value); 
     console.log(links); 
     return value; 
     }); 
    }); 

    function getVal(){ 
     console.log(links[0].target); 
    } 
</script> 
<button onclick="getVal()">Get target</button> 
+0

主な問題は、呼び出しが非同期で、私はそれを知らなかったということでした。 –

0

を私は

、あなたの成功のコールバックのコードが間違っていると思いますループ data.emailsから

正しい方法は、あなたがAKでconsole.logを呼んでいる、

success: function(data) { 
     $.each(data.emails, function(index, value) { // <--- change this 
      links.push(value); 
      console.log(links); //<--- updated 
      return value; 
     }); 
    } 
+0

あなたは正しいです、この場合は$ .eachを使用する方が正しいですが、問題の原因はありません。 $()は任意の配列のような構造体からコレクションを作成することができ、それを繰り返し処理します。 –

0

ですそれは存在しない。ランダムなプロパティではなく、配列を呼び出して出力するようにコードを修正します。

var links = []; 
    $.ajax({ 
    url: 'data.json', 
    dataType: 'json', 
    type: 'get', 
    cache: false, 
    success: function(data) { 
     $(data.emails).each(function(index, value) { 
      links.push(value); 
      console.log(links); 
      return value; 
     }); 
    } 
}); 
関連する問題