我正在尝试发送一个JSON请求,该请求返回有关某人年龄,性别和情感的数据。我有这个代码,响应有效,console.log(response)
显示响应,但当我尝试在if语句中使用JSON键时,我在Chrome中收到此错误消息:Uncaught TypeError: Cannot read property 'emotion' of undefined
at XMLHttpRequest.processRequest (test.html:15)
。
代码如下。
var xhr = new XMLHttpRequest();
var url = "http://cors-anywhere.herokuapp.com/http://86.15.11.51:8081/getPersons?format=json"
xhr.open('GET', url, true);
xhr.send();
xhr.onreadystatechange = processRequest;
function processRequest(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
response = JSON.parse(xhr.responseText);
var response2 = JSON.stringify(response, null, 4);
document.write(response2);
for (var i = 0; i < 1; i++) {
{
var imgArray = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg'];
var emotion = response[i]['emotion']
var gender = response[i]['gender']
var age = response[i]['age']
var basePath = "http://advertdemo.ga/adverts/" + emotion + "/" + gender + "/" + age + "/";
document.getElementById("demo").innerHTML = basePath;
function imgRandom() {
for (var i = 0; i < 18; i++) {
var rand = imgArray[Math.floor(Math.random() * imgArray.length)];
var image = new Image();
image.src = basePath + rand;
document.body.appendChild(image);
break;
}
}
imgRandom();
console.log(basePath + rand);
break;
}
}
}
}
<html>
<body>
</body>
</html>
答案 0 :(得分:1)
您的response
不是数组(!) - 所以为什么U用它并将其索引为数组
你应该这样做:
response['persons'][0].emotion
并且不要在for循环中硬编码上层索引:for (var i = 0; i < 1; i++)
。
答案 1 :(得分:1)
尝试访问persons
,然后访问emotion
。persons
键的值是一个数组。假设response
只有一个key
persons
,请使用0
从0
索引中获取元素
response.persons [0] .emotion