在不使用async的情况下为全局变量分配ajax响应:false

时间:2016-09-12 09:23:41

标签: jquery ajax asynchronous

我有以下脚本:

var myData;

$.ajax({
    url: "/foo.php",
    dataType : 'json',
    type: "POST",
    async: false
  })
  .done(function( data ) {
       myData = data;
  });

我想要做的就是将ajax响应中的数据分配给myData,并在我的脚本中进一步引用此变量。上面的代码似乎有效,但依赖async: false,我读过的并不是一件好事。如果我对此进行评论(因此它使用默认的async: true),则不会为myData分配任何内容。

我已阅读以下帖子jQuery ajax success callback function definition,但无法对其进行调整,因此我可以访问myData中的数据。我还注意到这个问题是在2013年被问到的,所以不确定它是否仍然准确或正确的方式来解决这个问题?

这应该如何完成?我使用的是jquery v1.11.1

1 个答案:

答案 0 :(得分:1)

好的,以下似乎有效。我已删除了async: false并添加了一个功能,我将引用ajax调用中的数据。

$.ajax({
    url: "/foo.php",
    dataType : 'json',
    type: "POST"
})
.done(function( data ) {
   buildTree(data);
});

function buildTree(data) {
   console.log(data);
   // other code that needs 'data'
}

我认为根据@pwolaq的建议,这是正确的。