参见英文答案 >
How do I return the response from an asynchronous call?18
TheObject = {
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); });