它将始终显示" cretetion"关联链接JSON,其他人被覆盖。所以我尝试增加以获得所有这些,但它没有工作。我不知道自己做错了什么。
name
答案 0 :(得分:0)
尝试为循环的每次迭代创建一个新的XMLHttpRequest,而不是重复使用相同的循环。即。
function loadXMLDoc() {
for (var i = 0; i < users.length ; i++) {
var xmlhttp = new XMLHttpRequest();
...
答案 1 :(得分:0)
我在这里修改了你的代码: https://plnkr.co/edit/VbkKc9QuVALAYLpujSdo?p=preview
首先,回调xmlhttp.onreadystatechange
会在循环的每次迭代时被覆盖,因此只会处理最后一个元素。
你应该在循环中创建和管理XMLHttp对象,对应于用户数组的每个元素。
第二,也是最重要的,你必须将xmlhttp.onreadystatechange
包装在一个立即调用的函数中,否则每个回调将使用最后一个xmlhttp对象,然后你将一直得到最后一个结果,如上所述。
for (var i = 0; i < users.length ; i++) {
var xmlhttp = new XMLHttpRequest();
var url = "https://wind-bow.glitch.me/twitch-api/streams/" + users[i];
(function(xmlhttp){
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
if (xmlhttp.status == 200) {
document.getElementById('online-id').innerHTML += (xmlhttp.responseText + "<br/><br/>");
}else if (xmlhttp.status == 400) {
console.log('There was an error 400');
}else {
console.log('Something else other than 200 was returned.');
}
}
}
})(xmlhttp)
xmlhttp.open("GET", url, true);
xmlhttp.send();
}