Ich versuche, ein JSON-Element mit dem Namen favColor
auszudrucken. Ich kann sehen, dass favColor
in der response.data
enthalten ist, aber ich kann nicht auf response.data.favColor
aus irgendeinem Grund zugreifen.Zugriff auf JSON-Element gibt undefined zurück
Wenn ich response.data
an die Konsole zu drucken, erhalte ich folgendes:
{"favColor":"green"}
jedoch response.data.favColor
kehrt undefined
.
Meine Form:
<form>
<label>Favorite Color: </label>
<br>
<input id="favColor" name="favColor" type="text">
<input type="submit" value="Submit POST Data" id="submitPost">
</form>
<br>
<div>
<label>Favorite Color:</label>
<div id=returnedFavColor></div>
</div>
My Script:
document.addEventListener('DOMContentLoaded', post);
function post() {
document.getElementById('submitPost').addEventListener('click', function(event) {
var req = new XMLHttpRequest();
var payload = {favColor: null};
payload.favColor = document.getElementById('favColor').value;
req.open("POST", "https://httpbin.org/post", true);
req.setRequestHeader('Content-Type', 'application/json');
req.addEventListener('load',function(){
if(req.status >= 200 && req.status < 400){
var response = JSON.parse(req.responseText);
console.log(response.data);
document.getElementById('favColor').textContent = response.data.favColor;
} else {
console.log("Error in network request: " + request.statusText);
}
});
req.send(JSON.stringify(payload));
event.preventDefault();
});
}
wahrscheinlich ist 'response.data' nur ein String mit dem Wert' {"favColor": "green"} '. Sie können 'console.log (typeof response.data);' protokollieren, um dies zu testen. – wero
Stimmen Sie mit @wero überein, Sie müssen es möglicherweise deserialisieren. – nurdyguy
* "Zugriff auf JSON-Element gibt undefined zurück" * Es gibt auch hier Probleme mit der Terminologie. "JSON" ist ein Datenaustauschformat, es ist im Grunde Text, genau wie XML, YAML oder CSV. In JavaScript kann Text nur aus einem Teil eines Strings bestehen (das ist, was 'req.responseText' zurückgibt). Wenn Sie die Zeichenfolge mit JSON ('JSON.parse (...)') analysieren, erhalten Sie einen JavaScript-Wert zurück, am häufigsten ein * Objekt * oder ein * Array *. An diesem Punkt haben Sie es nicht mehr mit JSON zu tun. Probleme beim Zugriff auf die Daten beziehen sich auf JavaScript und nicht auf JSON. –