我正在使用一个API来获取Battlefield的统计信息。级别返回一个数字,我使用一个开关来确定该级别的名称,因此无论用户名是什么,或者用户是否升级,都会使用开关进行更新。然而,当我访问“rank”变量时,它并没有出现,因为它说级别未定义,所以开关根本不起作用。
var rank;
var level;
$(document).ready(function() {
ajaxSearch();
});
function ajaxSearch() {
$.ajax({
url: '/api/',
dataType: 'json',
type: 'get',
cache: 'false',
success: function(data) {
$(data.result).each(function(index, value) {
level = value.rank.number;
console.log(level);
});
}
})
}
function workoutRank() {
switch (level) {
case '0':
rank = 'Recruit';
break;
case '1':
rank = 'Private';
break;
case '2':
rank = 'Private II';
break;
case '3':
rank = 'Private III';
break;
case '4':
rank = 'Private IV';
break;
case '19':
rank = 'Corporal X';
break;
}
}
$('#lookup-btn').click(function() {
workoutRank();
console.log(rank);
});
字符串
这是控制台的图像:
的数据
2条答案
按热度按时间vc9ivgsu1#
有两种可能性:
level
值是整数,那么case值也应该是整数:字符串
pgpifvop2#
ajaxSearch
是异步的,所以当你调用workoutRank
时,level
不能保证有值。你需要确保你理解这两件事是并行发生的。相反,在
ajax
调用返回时调用workoutRank
,或者使用promises
来确保值将被解析。**编辑:**这个问题被编辑,以显示这不一定是这样的,但我会离开这个,因为它肯定是一个问题,其他人在未来经历这一点