我无法使用回调函数来处理ajax GET请求

时间:2017-12-10 22:48:40

标签: javascript jquery json ajax callback

我试图将JSON文件中的特定元素从外部REST API写入我可以在我的JS代码中使用的本地字典变量。我的AJAX GET请求工作正常,但是当我在AJAX请求之外打印变量时,我似乎无法访问代码外部获取的数据,它返回undefined。我知道我需要使用回调函数来完成这项工作,但我似乎无法正确地完成它。这是我使用回调函数之前的样子:

<script>

var LeagueTable = []

  $.ajax({
      url: 'http://api.football-data.org/v1/competitions/445/leagueTable/?',
      headers: {
          'X-Auth-Token':''
      },
      method: 'GET',
      dataType: 'json',
      success: function(data) {
      console.log(data)
      for ( i = 0; i < 20; i++) {
        LeagueTable[data.standing[i].teamName] = data.standing[i].position
      }
 }
    });


// LeagueTableAppend(LeagueTable)
console.log(LeagueTable["Watford FC"])

</script>

但是字典并没有附加在ajax请求之外,所以我尝试用回调函数来改变它,但是我不确定如何实现它们。我只是想让LeagueTable字典保留for循环中添加的值。然后这是我尝试使用回调函数,但它没有用。

<script>

var LeagueTable = []

function getdata(){
  $.ajax({
      url: 'http://api.football-data.org/v1/competitions/445/leagueTable/?',
      headers: {
          'X-Auth-Token':''
      },
      method: 'GET',
      dataType: 'json',
      success: handleData

    });
  }


function handleData(data){
  // console.log('success: '+ JSON.stringify(data));
  for ( i = 0; i < 20; i++) {
    LeagueTable[data.standing[i].teamName] = data.standing[i].position
    // console.log(JSON.stringify(data.standing[i].teamName) + ':' + data.standing[i].position);
                          }
                        }
getdata(handleData)
// LeagueTableAppend(LeagueTable)

console.log(LeagueTable["Watford FC"])
</script>

1 个答案:

答案 0 :(得分:0)

回调代码仅在请求返回后运行,而打印代码在发送请求后立即运行。