此问题在此处已有答案:
How do I return the response from an asynchronous call?(44个答案)
9年前关闭。
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);
它返回“未定义”。我不知道问题出在哪里。数组在成功函数中创建,但我无法正确返回它。谢谢你的帮助!
3条答案
按热度按时间5f0d552i1#
在您的代码中,您在 AJAX 调用完成之后使用过程编码查找
groups
,主要问题是您在ajax调用完成之前查找groups
。另一个问题是,您将组返回给
success()
函数,但TheObject.getArray()
函数什么也不返回。所以你需要把回调函数引入 AJAX 函数,如下所示:
7xllpg7q2#
大卫例子的一个非常简单的版本。
5lhxktic3#
在数组上使用
push
。另外,您希望创建一个名为Group的类型,然后在循环中创建一个新组,然后将其推入数组。