如何从jQuery ajax成功函数正确返回数组?

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调用后正在寻找使用过程编码的groups 。 主要问题是你在ajax调用完成之前正在寻找groups

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

所以你需要将回调引入ajax函数,如下所示:

 TheObject = { getArray: function(callback) { 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++; }); callback.call(this,groups); } }); } } TheObject.getArray(function(a) { // this code runs when the ajax call is complete alert(a); }); 

David的一个非常简单的例子。

 TheObject = { getArray: function(callback) { $.ajax({ cache: true, type: "GET", url: "http://www.domain.com/core/domains.php", success: function (data){ callback.call(this,data); } }); } } TheObject.getArray(function(data) { javascript: console.log(data); }); 

使用push on the array。 您还想创建一个名为Group的类型,然后在循环中创建一个新组,然后将其推入arrays。