无法访问第二个API函数中第一个API的数据

时间:2020-01-14 13:20:08

标签: javascript

 <script>
        /* 1st API*/
        $.getJSON("http://cricapi.com/api/matches/?apikey=6aP8B4MImxSNxI6fevBmC2ZshO42",function(data){
         var len = data.matches.length;
         for(i=0;i<len;i++){

              id = data.matches[i].unique_id;
              ms = data.matches[i].matchStarted;
              x = data.matches[i].date;
              team_1 = data.matches[i]['team-1']
               /* 2nd  API*/
             $.getJSON("https://cricapi.com/api/cricketScore/?apikey=6aP8B4MImxSNxI6fevBmC2ZshO42&unique_id="+id,function(data1){
                    console.log(team_1);

                              });
                 }
  });

为什么我在第二getJSON()秒后无法获得每场比赛的 team_1 。它多次给出相同球队名称的输出,请帮助我获得每次比赛的球队名称。感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

此“错误”是由hoisting引起的。

索引 i 被存储为 var ,并且不在循环范围内,因此,当索引获得其最终值时,相同的值为使用。

您可以使用 let 关键字:

for(let i=0;i<len;i++){ ..

因此变量将在循环范围内

也请查看此link

答案 1 :(得分:-2)

function getScore(id, callback) {
    $.getJSON("https://cricapi.com/api/cricketScore/?apikey=6aP8B4MImxSNxI6fevBmC2ZshO42&unique_id="+id, function(data1) {
        callback(data1);
    });
}

$( document ).ready(function() {
    $.getJSON("http://cricapi.com/api/matches/?apikey=6aP8B4MImxSNxI6fevBmC2ZshO42",function(data){
        var len = data.matches.length;
        for(i=0;i<len;i++){
            id = data.matches[i].unique_id;
            ms = data.matches[i].matchStarted;
            x = data.matches[i].date;
            team_1 = data.matches[i]['team-1']
            /* 2nd  API*/
            getScore(id, function(data1) {
                console.log(data1);
            });
        }
    });
});
相关问题