2017-05-09 1 views
-2

hallo im Versuch, einem APIJSON.parse o an der Position in JSON unerwartetes Token gibt 1

</div> 
    <div id=test> 
    </div> 
    </body> 
    <script type="text/javascript" src="js/jest1.js"></script> 
    <script> 

    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "apikey", false); 
    xhr.send(); 
    console.log(xhr.status); 
    console.log(xhr.response); 
    var parsed = JSON.parse(xhr); 
    document.getElementById('test').innerHTML = myObject.description; 
</script> 

, wenn ich dies zu analysieren tun, ohne das Parsing ich alle Informationen in der Konsole im sehen versuchen, die Informationen zu erhalten aus der Konsole und weisen sie Objekten zu. In diesem Fall sind es cnn-Nachrichtenartikel. Dies würde die api Ausgänge sein

"status": "ok", "source": "cnn", "sortBy": "top", "articles": [{ 
    "author": "Clarissa Ward, Waffa Munayyer, Salma Abdelaziz, and Fiona Sibbett, CNN", 
    "title": "Gasping for life: Syria's war on children", 
    "description": "Harrowing new footage of the chemical attack on the town of Khan Sheikhoun reveals the depravity of the Syrian regime, reports CNN's Clarissa Ward.", 
    "url": "http://www.cnn.com/2017/05/09/middleeast/syria-chemical-attack-ward/index.html", 
    "urlToImage": "http://i2.cdn.cnn.com/cnnnext/dam/assets/170509143050-syria-clarissa-ward-video-hp-tease-super-tease.jpg", 
    "publishedAt": "2017-05-09T20:01:16Z" 
    }] 

ich glaube nicht, dass ich jemals genannt getJSON() Ich habe selber nie wirklich und den Parsing nenne ohne Ausgabe der Beschreibung aus der api zu tun versuchen, im immer json, was im Deklarierung und jetzt ist es an undefined in dem Elemente Anzeige

+0

xhr.description ** – user3642695

+1

Mögliche Duplikate von [Ich bekomme immer "Uncaught SyntaxError: Unerwartete Token O"] (http://StackOverflow.com/Questions/8081701/Ikeep-Getting-Uncaught-SyntaxRechts-unerwartete- Token-o) –

+0

Wenn das wirklich die Ausgabe der API ist, ist es kein gültiger JSON. –

Antwort

2

var parsed = JSON.parse(xhr); das XMLHttpRequestObjekt zu analysieren versucht. Dadurch wird das Objekt in eine Zeichenfolge umgewandelt, und dann wird versucht, diese Zeichenfolge als JSON zu analysieren, was "[object Object]" ergibt. Dies ist ein ungültiger JSON-Code ab o.

Sie wollten wahrscheinlich:

var parsed = JSON.parse(xhr.responseText); 

bei parsed Schauen Sie, um zu sehen, wo die Beschreibung in dem resultierenden Objekt ist. Ich kann es dir nicht sagen, da das JSON in der Frage ungültig ist. Es könnte seine parsed.articles[0].description, wobei in diesem Fall:

document.getElementById('test').innerHTML = parsed.articles[0].description; 

Aber auch hier ohne gültige JSON aus zu arbeiten, ist es schwer zu sagen. Es sollte trivial sein, mit dem in Ihrem Browser eingebauten Debugger herauszufinden, welchen Wert parsed hat, sobald er zugewiesen ist.


Randbemerkung: Synchrone Ajax sorgt für schlechte UX und ist im Grunde nie notwendig.

+0

Vielen Dank, dies zu tun mit einer undefinierten Nachricht an der Position – user3642695

+0

@ user3642695: Dann entweder die Anfrage nicht funktioniert, oder der JSON ist so definiert, oder Sie greifen auf die geparste JSON falsch. Aber du willst definitiv 'xhr.responseText' analysieren, nicht' xhr'. –

+0

Ich habe JSON nie definiert Wie definierst du es – user3642695

Verwandte Themen