2017-05-18 2 views
-3

Warum ist das Array undefinedObjekte im Array sind undefined

Meine Frage ist, wie bekomme ich die Objekte im Ergebnis-Array anzuzeigen. Ich habe versucht, console.log (data.results [0] .bodyColor) und ich bekomme einen Fehler. Wenn ich versuche (data.results), werde ich undefiniert. wenn ich versuche (data.results [0]) gibt es Antworten mit einer Fehlermeldung. Warum ist das Array nicht definiert, wenn ich es auf meiner Konsole sehen kann? [Dies ist die Konsole so, wie ich den Wert des AirBagLocFront ausdrucken kann] [1]

<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Untitled Document</title> 
 
</head> 
 

 
<body> 
 
    <h2> Vehicle API</h2> 
 
    <div id="div"></div> 
 
    <script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script> 
 
    <!--Jquery CDN--> 
 
    <script> 
 
     $.ajax({ 
 
      url: "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/", 
 
      type: "POST", 
 
      cache: true, 
 

 
      data: { 
 
       format: "json", 
 
       data: "WBAPK5C52AA599960;" 
 
      }, 
 
      dataType: "json", 
 

 
      success: function(data) { 
 

 
       console.log(data.results[0].AirBagLocFront); 
 

 
      } 
 
     }); 
 
    </script> 
 
</body> 
 

 
</html>

+0

weil die Datenstruktur nicht so ist, dass Sie auf die Werte auf die Art zugreifen können, wie Sie es versuchen. Untersuchen Sie die Struktur, die Sie erhalten, und verwenden Sie sie entsprechend. * (Javascript ist case sensitive) * –

+0

Die Struktur ist ein Json-Objekt und ich dachte, Sie könnten einfach durchqueren, als wäre es ein Javascript-Objekt. Ich habe auch Ergebnisse in Ergebnisse geändert und das hat auch nicht funktioniert. –

+0

Ja, Sie können es einfach wie jedes andere Objekt durchqueren, denn das ist alles. Es ist nicht Json, sobald Sie Zugriff darauf haben. –

Antwort

0

Sie haben einen Tippfehler in Ihrem Code. Sie möchten Results, nicht results. Außerdem ist Results ein Array, das ein einzelnes Objekt enthält. Mit einer for...in-Schleife können Sie die gesamte Datenstruktur ganz einfach durchlaufen. Hier ist ein funktionierendes Schnipsel:

$.ajax({ 
 
    url: "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/", 
 
    type: "POST", 
 
    cache: true, 
 
    data: { 
 
    format: "json", 
 
    data: "WBAPK5C52AA599960;" 
 
    }, 
 
    dataType: "json", 
 
    success: function(data) { 
 
    var res = data.Results[0]; 
 
    for (var prop in res) { 
 
     if (res.hasOwnProperty(prop)) { 
 
     console.log(prop + ' - ' + (res[prop] ? res[prop] : 'N/A')); 
 
     } 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Untitled Document</title> 
 
</head> 
 

 
<body> 
 
    <h2> Vehicle API</h2> 
 
    <div id="div"></div> 
 
    <script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script> 
 
    <!--Jquery CDN--> 
 
    <script> 
 
     $.ajax({ 
 
      url: "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/", 
 
      type: "POST", 
 
      cache: true, 
 

 
      data: { 
 
       format: "json", 
 
       data: "WBAPK5C52AA599960;" 
 
      }, 
 
      dataType: "json", 
 

 
      success: function(data) { 
 

 
       console.log(data['Results'][0]['BodyClass']); 
 

 
      } 
 
     }): 
 
    </script> 
 
</body> 
 

 
</html>

Dies funktioniert die Syntax i verwendet wurde das verschachtelte Objekt zuzugreifen war nicht korrekt. Danke an alle.