2017-08-30 1 views
0

Dies ist, was ich gerade mache. Ich habe versucht, nur die Werte von meinem json in die Links-Array, aber beim Betreten des Arrays die Werte werden undefined. Was ist ein besserer Weg, um die Daten zu verschieben und trotzdem nutzbar zu machen?Hinzufügen zu meiner Liste Array von meinem JSON-Objekt

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]" 
    }] 
} 

Ergebnis dieses Code verwendet, ist das gleiche. Die Werte geben Sie das Array, aber wenn man sie über Links zugreifen. (Name des Wertes) es gibt 'undefined'

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

Result

+0

, was drin ist "Daten"? – Sletheren

+0

Die eigentliche Frage ist, wo Sie zurückkehren, und wo überprüfen Sie die 'Links' -Array, und warum würde dieses Array eine' target' -Eigenschaft haben? – adeneo

+0

Wo überprüfen Sie das 'links' Array? Beachten Sie, dass die AJAX-Anfrage asynchron ist. –

Antwort

0

Diese

<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

Das Hauptproblem war, dass der Anruf asynchron ist und ich das nicht wusste. –

0

Ich denke, Ihr Erfolg Rückruf Code falsch ist,

der richtige Weg data.emails Schleife ist,

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

Sie sind korrekt-ish, in diesem Fall ist es richtiger, $ .Each in diesem Fall zu verwenden, aber es ist nicht, was das Problem verursacht. $() kann eine Sammlung aus einer beliebigen arrayähnlichen Struktur erstellen, und jede wird darüber iterieren. –

0

Du nennst console.log auf ak Das gibt es nicht. Ändern Sie Ihren Code, um das Array aufzurufen und auszugeben, keine zufällige Eigenschaft. Versuchen

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; 
     }); 
    } 
}); 
Verwandte Themen