我試圖打印出名爲favColor
的JSON元素。我可以看到,favColor
包含在response.data
中,但由於某些原因,我無法使用response.data.favColor
訪問它。訪問JSON元素返回undefined
如果我打印response.data
到控制檯,我得到如下:
{"favColor":"green"}
然而,response.data.favColor
返回undefined
。
我的形式:
<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>
我的腳本:
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();
});
}
或許'response.data'只是一個值爲{{favColor「:」green「}'的字符串。你可以登錄'console.log(typeof response.data);'來測試這個。 – wero
同意@wero您可能需要反序列化它。 – nurdyguy
*「訪問JSON元素返回未定義」*這裏還有一個術語問題。 「JSON」是一種數據交換格式,它基本上就是文本,就像XML,YAML或CSV一樣。在JavaScript中,文本只能存在一部分字符串(這就是'req.responseText'返回的內容)。當你解析包含JSON的字符串時('JSON.parse(...)'),你會得到一個JavaScript值,通常是一個* object *或一個* array *。那時你不再處理JSON了。訪問數據的任何問題都與JavaScript相關,而不是JSON。 –