2016-03-19 9 views
0

ich zur Ausgabe versucht, den „Titel“, „url“, „imageUrl“ aber es zeigt nur „unbestimmt“ oder „[object Object]“ und ich habe diesejQuery Json nicht ausgibt den richtigen Wert

Mein Code lösen ausgeben soll wie folgt aus:

<p>The Word</p> 
<p>Art</p> 
<p>Attaining</p> 

Hier ist meine JSON-Code:

{ 
    "ebookList":{ 
     "ebook":[ 
      { 
       "title":"The Word", 
       "url":"/products/", 
       "imageUrl":"/products/", 
       "_id":"1" 
      }, 
      { 
       "title":"Art", 
       "url":"/products/", 
       "imageUrl":"/products/", 
       "_id":"2" 
      }, 
      { 
       "title":"Attaining", 
       "url":"/products/", 
       "imageUrl":"/products/", 
       "_id":"3" 
      } 
     ] 
    } 
} 

und mein Java Skript:

function loadBooks() { 
    $.getJSON('products/books.json', function (result) { 
     $.each(result, function (i, res) { 
      alert(res.title); 
     }); 
    }); 
} 
+2

'$ .each (result.ebookList.ebook, Funktion (i, res) { alert (res.title); });' oder '$ .each (Ergebnis [ 'ebookList'] [ 'ebook' ], Funktion (i, res) { alert (res.title); }); ' –

+0

Also, es wird das gleiche wie die anderen Eigenschaften sein. – jazz

Antwort

1

Das Problem ist, dass Sie each auf Ergebnis zu tun, die die ganze Tabelle. Ihre res Variable enthält also jede Iteration ebook und hier haben Sie nur eine. Das Array ebook enthält kein title Attribut (was die undefined Sie erhalten erklärt), es enthält nur Objekte (3 Arrays in diesem Beispiel, die die Ausgabe, die Sie haben, wenn Sie alert(res) tun), die title Attribute unter anderem enthalten.

So zu tun, was Sie wollen, müssen Sie $.each(result.ebookList.ebook, function (i, res) tun, die Schleife durch die Objekte innerhalb der ebook Objekt.

1

Um die Titel zu alarmieren verwenden Sie diese Schleife.

for(i=0; i<result.ebookList.ebook.length; i++){ 
    alert(result.ebookList.ebook[i].title); 
} 
+0

Funktion loadEbooks() {$ .getJSON ('Produkte/ebooks.json', function (result) { $ .each (Ergebnis Funktion (i, res) { für (var j in i) { $ ("#ebooks .contents"). append ('

' + res ['E-Book'] [j] .title + '

'); } }); }); } funktioniert auch, aber es zeigen nur 9 Ergebnisse, wenn ich mein JSON "Ebook" hinzugefügt habe – jazz

+0

Withou $ .Each, macht meine Schleife das gleiche in reinem JavaScript –

Verwandte Themen