我试图将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>
答案 0 :(得分:0)
回调代码仅在请求返回后运行,而打印代码在发送请求后立即运行。