data.map ist keine Funktion
Bin ich heftig mit meinem Kopf gegen einen Fehler ich kann nicht herausfinden, wie zu beheben. Ich habe die folgenden;
JSON
{"products":
[
{
"product_id" : "123",
"product_data" : {
"image_id" : "1234",
"text" : "foo",
"link" : "bar",
"image_url" : "baz"
}
},{
"product_id" : "456",
"product_data" : {
"image_id" : "1234",
"text" : "foo",
"link" : "bar",
"image_url" : "baz"
}
}
]}
sowie die folgende jQuery -
function getData(data) {
this.productID = data.product_id;
this.productData = data.product_data;
this.imageID = data.product_data.image_id;
this.text = data.product_data.text;
this.link = data.product_data.link;
this.imageUrl = data.product_data.image_url;
}
$.getJSON("json/products.json").done(function (data) {
var allProducts = data.map(function (item) {
return new getData(item);
});
});
doch ich erhalte eine Fehlermeldung, dass Karte.Daten undefiniert, da eine Funktion? Ich schaute nicht wissen, was nicht so funktioniert, wie ich habe, kopiert diese auf ein neues Projekt von bisher verwendeten code. Das einzige, was anders ist, ist die json-Quelle. Die Vorherige hatte nicht die {"products": Teil, bevor die [] Klammern. Ist das, was warf mich aus?
Kommentar zu dem Problem
Bitte nicht bash Ihren Kopf mehr - wir werden durchkommen...
Karte.Daten oder Daten.Karte?
InformationsquelleAutor der Frage mrcat | 2015-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Objekte
{}
in JavaScript nicht über die Methode.map()
, es ist nur für Arrays,[]
.Also, um für Ihren code ändern
data.map()
zudata.products.map()
seitproducts
ist ein array, das können Sie iterativ auf.InformationsquelleAutor der Antwort Henrik Andersson
Den richtigen Weg zu iterieren über Objekte ist
Lesen Sie hier für details
InformationsquelleAutor der Antwort user3930374
data
ist kein array, es ist ein Objekt mit einer Reihe von Produkten, so Durchlaufendata.products
InformationsquelleAutor der Antwort Arun P Johny
Können Sie Folgendes tun:
InformationsquelleAutor der Antwort Daniel Ryan Snell
Es ist ein Fehler auf
$.map()
Aufruf, versuchen Sie dies:Den Fehler in deinem code war, dass du das gemacht
return
in deinem AJAX-Aufruf, so dass es nur ausgeführt, eine Zeit.InformationsquelleAutor der Antwort Giacomo Paita