无法显示所有JSON

时间:2017-03-25 01:17:55

标签: javascript

它将始终显示" cretetion"关联链接JSON,其他人被覆盖。所以我尝试增加以获得所有这些,但它没有工作。我不知道自己做错了什么。

name

2 个答案:

答案 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(); 

}