2017-06-16 3 views
0

Ich verwende ES6 und Fetch.Javascript fetch nicht lesen JSON-Datei

Es mir diesen Fehler ist zu geben:

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 

Hier ist der Code:

fetch('list.json').then(function(response) { 
    return response.json(); 
    }).then(function(j) { 

    console.log(j); 
    }); 

und hier sind die Daten von list.json:

[ 
    { 
    "id": 1, 
    "name": "name1" 
    }, 
    { 
    "id": 2, 
    "name": "name2" 
    } 
] 

Warum ich bin Ich bekomme diesen Fehler und wie kann ich das beheben?

+2

Die Antwort ist kein JSON aber html. Wahrscheinlich eine Fehlermeldung. Schau in die Konsole. –

+0

Meine Vermutung ist, dass der Server einen Fehler in Form einer HTML-Seite zurückgibt. Können Sie die Antwort überprüfen, die Sie erhalten? (z. B. Registerkarte "Netzwerk" in den Chrome-Entwicklungstools) – yadejo

+0

Es scheint, dass fetch eine HTML-Datei erhält, haben Sie eine 404-HTML-Datei oder etwas ähnliches? – dloeda

Antwort

0

Das ist keine gültige JSON-Datei. Valid JSON wäre wie dieser

{ 
    "data":[ 
    { 
     "id": 1, 
     "name": "name1" 
    }, 
    { 
     "id": 2, 
     "name": "name2" 
    } 
    ] 
} 
0

Sie sind nicht eine JSON senden, die korrekt von der .json Verfahren verstanden wird, sollten Sie nur werfen es in der beschriebenen Art und Weise und alles sollte gut zu gehen.

Correct JSON:

{ "products" : [ 
    { "Name": "Cheese", "Price" : 2.50, "Location": "Refrigerated foods"}, 
    { "Name": "Crisps", "Price" : 3, "Location": "the Snack isle"}, 
    { "Name": "Pizza", "Price" : 4, "Location": "Refrigerated foods"}, 
    { "Name": "Chocolate", "Price" : 1.50, "Location": "the Snack isle"}, 
    { "Name": "Self-raising flour", "Price" : 1.50, "Location": "Home baking"}, 
    { "Name": "Ground almonds", "Price" : 3, "Location": "Home baking"} 
]}