jQuery使用post返回函数外的JSON数组

时间:2013-05-07 16:33:52

标签: jquery arrays post scope

我确信我错过了一些明显的东西,但无论如何我似乎无法弄明白。

这就是我所拥有的

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数组。

由于

3 个答案:

答案 0 :(得分:3)

这不是范围问题,而是执行问题的顺序。 .post()异步,所以这行代码:

$('.vardisplay3').append(warr+'');

正在执行之前这行代码:

fw(data.warray);

范围很好,但是如果你想在响应异步AJAX调用时发生某些事情(例如追加返回值),则需要从该AJAX调用的回调函数调用它。否则它将在AJAX调用完成之前执行,并且它将没有任何数据可供使用。

答案 1 :(得分:2)

帖子是异步的。

如果要使用返回的数据,则需要使用成功回调

http://api.jquery.com/jQuery.post/

答案 2 :(得分:0)

您可以通过 ajax 调用更改 $。发布,这样可以轻松回调您的数据,并防止出现此问题......

$.ajax({
  type: "POST",
  url: "AJAX_GetGameWords.asp",
  data: "",
  async: false,
  success: function(t){
    alert(t);// You can call your function HERE
  }
});