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'。 我无法弄清问题在哪里。数组在成功函数内创建,但我无法正确返回。 谢谢你的帮助!
答案 0 :(得分:16)
在您的代码中,您在进行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);
});
答案 1 :(得分:5)
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);
});
答案 2 :(得分:0)
在阵列上使用push
。您还想创建一个名为Group的类型,然后在循环中创建一个新组,然后将其推入该数组。