ecu*_*ecu 12 ajax jquery scope return
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;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试调用此方法时:
var a = TheObject.getArray();
alert(a);
Run Code Online (Sandbox Code Playgroud)
它返回'undefined'.我无法弄清问题在哪里.数组在成功函数内创建,但我无法正确返回.谢谢你的帮助!
Dav*_*ing 16
在您的代码中,您正在寻找groups在进行ajax调用之后使用过程编码.主要问题是你groups在ajax调用完成之前正在寻找.
另一个问题是您将组返回到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);
});
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56052 次 |
| 最近记录: |