我确信我错过了一些明显的东西,但无论如何我似乎无法弄明白。
这就是我所拥有的
var warr = new Array();
$('#step3next').click(function() {
$.post('AJAX_GetGameWords.asp',function(data) {
fw(data.warray);
},"json");
$('.vardisplay3').append(warr+'');
});
function fw(x) {
warr = [x];
}
最终我想要的是能够在任何地方使用warr数组。
如果我把$('.vardisplay3').append(warr+'');
放在fw(data.warray)之下;然后它工作正常并显示在.vardisplay3中,但是现在它在哪里,它不会显示任何内容。
我认为既然warr被设置为全局,它就可以工作,但我显然错过了范围问题或其他什么。
任何人都可以解释发生了什么,我怎样才能在任何地方使用warr数组。
由于
答案 0 :(得分:3)
这不是范围问题,而是执行问题的顺序。 .post()
是异步,所以这行代码:
$('.vardisplay3').append(warr+'');
正在执行之前这行代码:
fw(data.warray);
范围很好,但是如果你想在响应异步AJAX调用时发生某些事情(例如追加返回值),则需要从该AJAX调用的回调函数调用它。否则它将在AJAX调用完成之前执行,并且它将没有任何数据可供使用。
答案 1 :(得分:2)
答案 2 :(得分:0)
您可以通过 ajax 调用更改 $。发布,这样可以轻松回调您的数据,并防止出现此问题......
$.ajax({
type: "POST",
url: "AJAX_GetGameWords.asp",
data: "",
async: false,
success: function(t){
alert(t);// You can call your function HERE
}
});