2016-10-09 3 views
0

Ich versuche, die Eigenschaftsinformationen für ‚Kind‘ in den JSON-Daten zu uns kommen:JSON-Objekteigenschaft abrufen?

https://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json

ich zur Zeit gerade bin immer auf die Konsole 18 ‚undefined‘ ausgedruckt.

Wohin gehe ich falsch?

Prost

$(document).ready(function(){ 
     var jsonData = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json'); 

     for(var key in jsonData) { 
      console.log(key.kind); 
     } 
}); 
+0

geschrieben werden Schauen Sie sich die Struktur des JSON näher. Ich kann schon sehen, dass die ganze Sache in ein Array gewickelt ist, so dass Ihr Ergebnis mindestens in jsonData [0] sein wird. – EvilZebra

+0

Druck nur Schlüssel zeigt 18 Schlüssel console.log (Schlüssel); eher key.kind –

+0

Überprüfen Sie die var jsonData, wenn Sie die Antwort bekommen von getJSON oder nicht –

Antwort

1

$.getJSON liefert einen promise (genauer gesagt, ein jqXHR Objekt, das die Schnittstelle implementiert Versprechen), nicht die Ergebnisse der HTTP-Antwort als JSON Parsen.

Wenn Sie über ein Objekt mit in iterieren, sind die Werte, die Sie erhalten, die Namen der Eigenschaften als Zeichenfolgen. Diese haben keine kind Eigenschaften.

Um zu kind zu gelangen, müssen Sie den Wert lesen, nicht den Namen der Eigenschaft.

Am besten vermeiden Sie jedoch in für Arrays. forEach ist normalerweise ein besserer Ansatz.

function processResponse(parsed_data) { 
 
    parsed_data.forEach(processItem) 
 
} 
 

 
function processItem(current_value) { 
 
    console.log(current_value.kind); 
 
} 
 

 
var jqXHR = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json'); 
 

 
jqXHR.done(processResponse);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Hallo Quentin, danke für die detaillierte Antwort Ich schätze es. Meine JS ist ziemlich einfach, um fair zu sein, ich habe nur den Codecademy JS-Kurs gemacht. Ich habe AJAX noch nicht gelernt. Ich wollte nur versuchen, eine einfache App mit JS zu machen. Glaubst du, ich sollte zuerst AJAX lernen? Oder welche Voraussetzungen empfiehlst du? Danke –

+0

@JoeConsterdine - Da Sie versuchen, Ajax zu verwenden ... ja, sollten Sie es lernen. – Quentin

+0

Ich dachte es ist nur JQuery haha. –

-2

Druck nur der Schlüssel das Ergebnis nicht undefiniert zeigt. Wenn du nur den Schlüssel nimmst, wird der Schlüssel angezeigt.

for(var key in jsonData) { 
    console.log(key); 
} 
-1

Gleiche wie Quentin aber mehr lesbar meiner Meinung nach, keine Notwendigkeit für getJSON usw., angekettet w/o Zusatzfunktionen

$.ajax({ 
     method: "GET", 

     url: "http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json", 

     dataType: "json" 

    }).done(function(d) { 
     d.forEach(function(o) { 
      console.log(o.kind); 
     }); 
    }); 
-1

Sie müssen den Erfolg Rückruf passieren Argument in getJson Funktion. Wie das Snippet unten

var jsonData = $.getJSON('https://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json', function(response) { 
     response.forEach(function(key) { 
      console.log(key.kind) 
     }) 
     }); 

Check this JS fiddle

0

$ .getJSON ist als unten

$(document).ready(function(){ 
    var jsonData = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json', function(jsonData) { 
     $.each(jsonData, function(key, val) { 
     console.log(val.kind); 
     }); 
    }); 
});