如何从jQuery ajax成功函数返回一个数组?

前端之家收集整理的这篇文章主要介绍了如何从jQuery ajax成功函数返回一个数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How do I return the response from an asynchronous call?18
TheObject = {
getArray: function(){
        var groups = new Array;
        $.ajax({
              type: "POST",url: "link.PHP",success: function (data){
                  var counter = 0;
                  $('g',data).each(function(){    
                      var group_name = $(this).find("name").text();
                      var group_id = $(this).find("id").text();
                      var group = {
                         id: group_id,name: group_name
                      }
                      groups[counter] = group;
                      counter++;
                  });
                  return groups;
              }
         });
     }

}

当我尝试调用这个方法时:

var a = TheObject.getArray();
alert(a);

它返回’undefined’.
我不明白问题在哪里该数组在成功函数内部创建,但我无法正确返回.
谢谢你的帮助!

解决方法

在你的代码中,在ajax调用之后,你正在寻找使用过程编码的组.主要的问题是在ajax调用完成之前您正在寻找组.

另一个问题是您将组返回到success()函数,但TheObject.getArray()函数不返回任何内容.

所以你需要将回调引入到ajax函数中:

TheObject = {
    getArray: function(callback) {
        var groups = new Array;
        $.ajax({
              type: "POST",name: group_name
                      }
                      groups[counter] = group;
                      counter++;
                  });
                  callback.call(this,groups);
              }
         });
     }
}

TheObject.getArray(function(a) {
    // this code runs when the ajax call is complete
    alert(a);
});

猜你在找的jQuery相关文章