2016-03-21 5 views
0

Versuch, JSON zu analysieren und eine UNDEFINED zu erhalten, wenn ich versuche, auf einen der Knoten zuzugreifen. Der erste Teil des JSON und die Funktion sind unterJSON Nicht definierter Knoten, der versucht, zu analysieren

function loadmakes() 
    { 

    jQuery.ajax({ 
    url: "getedmunds.php", 
    data:'id=1', 
    type: "POST", 
    success:function(data){ 
     alert(data);  
     alert(data.makes); //<<<< **FAILS HERE Undefined** 

     for(var i in data.makes) 
       { 
         $('#make').append('<option value=' + data.makes[i].id + '>' + data.makes[i].name + '</option>'); 
       } 
    }, 
    error:function(){ 
     alert("Error calling makes"); 
     } 
    }); 

} 

Das sind die ersten Zeilen des JSON ist

{"makes":[{"id":200002038,"name":"Acura","niceName":"acura","models":[{"id":"Acura_ILX","name":"ILX","niceName":"ilx","years":[{"id":200471908,"year":2014}]},{"id":"Acura_ILX_Hybrid","name":"ILX Hybrid","niceName":"ilx-hybrid","years":[{"id":200493809,"year":2014}]},{"id":"Acura_MDX","name":"MDX","niceName":"mdx","years":[{"id":200465929,"year":2014}]},{"id":"Acura_RDX","name":"RDX","niceName":"rdx","years":[{"id":200467168,"year":2014}]},{"id":"Acura_RLX","name":"RLX","niceName":"rlx","years":[{"id":100539511,"year":2014}]},{"id":"Acura_TL","name":"TL","niceName":"tl","years":[{"id":200488448,"year":2014}]},{"id":"Acura_TSX","name":"TSX","niceName":"tsx","years":[{"id":200490517,"year":2014}]},{"id":"Acura_TSX_Sport_Wagon","name":"TSX Sport Wagon","niceName":"tsx-sport-wagon","years":[{"id":200673755,"year":2014}]}]},{"id":200001769,"name":"Aston Martin","niceName":"aston-martin","models":[{"id":"Aston_Martin_DB9","name":"DB9","niceName":"db9","years":[{"id":200473436,"year":2014}]},... 
+0

Pls post das Ergebnis von console.log (Daten) –

Antwort

1

Das Problem ist, dass data ist kein geparsten JSON-Objekt, es ist eine Zeichenfolge. Wenn Sie AJAX verwenden, wird eine Zeichenfolge zurückgegeben.

Sie können eines von zwei Dingen tun: Eines, bietet jQuery eine dataType option for $.ajax. Geben Sie einfach den Wert "json" ein und jQuery/AJAX analysiert das Ergebnis automatisch für Sie.

$.ajax({ 
    // ... 
    dataType: 'json', 
    success: function(data) { 
     // `data` is a javascript object now. 
    } 
}); 

Sie könnten auch JSON.parse verwenden data in Erfolg zu analysieren. Dies ist praktisch, was jQuery/AJAX für Sie mit der letzten Lösung tut.

+0

Das war es, danke für die Hilfe! –