0

嗨朋友们,我有一个 ajax()of jquery 来解析 xml 文件,成功创建数组并希望在回调时返回多个数组是否有可能,如果可以,那么如何?请指导我。这是我的示例代码。

var arr1= new Array();
var arr2=new Array();
 var var1,var2;
function parseData(callback){   
        var cnt=0;
            $.ajax({
                type:"GET",
                url:"test.xml",
                dataType: "xml",
                success:function(xml){

                    var tempcategory= new Array(2);
                    var tempitem=new Array(4);                  
                    var1= $(xml).find('var1').text();
                    var2= $(xml).find('var2').text();

                    $(xml).find('result').each(function(){
                    var Id = $(this).find('id').text();
                    var Name = $(this).find('name').text();
                        tempcategory[0]=catogoryId;
                        tempcategory[1]=catogoryName;
                        arr1[cnt]=tempcategory;
                        $('#output').append("<br/>"+categories[cnt]);
                         cnt++;
                    });                 
                             callback.call(null,var1);

                error: function(){
                     alert("An error occurred while processing XML file.");
                }
           });      

}

现在在这段代码中有一行 callback.call(null,var1);

在这个我只返回 1 个变量,但我有数组和其他一些变量,我如何返回所有数组和变量,如果没有,还有其他方法可以返回多个数组。

谢谢

4

2 回答 2

1

您的函数中的语法错误我已更正它请检查一下

function parseData(callback){   
var cnt=0;
    $.ajax({
        type:"GET",
        url:"test.xml",
        dataType: "xml",
        success:function(xml){
            var tempcategory= new Array(2);
            var tempitem=new Array(4);                  
            var1= $(xml).find('var1').text();
            var2= $(xml).find('var2').text();

            $(xml).find('result').each(function(){
            var Id = $(this).find('id').text();
            var Name = $(this).find('name').text();
                tempcategory[0]=catogoryId;
                tempcategory[1]=catogoryName;
                arr1[cnt]=tempcategory;
                $('#output').append("<br/>"+categories[cnt]);
                 cnt++;
            });                 
            callback.call(null,var1);
        },
        error: function(){
             alert("An error occurred while processing XML file.");
        }
   });      

}
于 2012-07-13T07:23:44.590 回答
1

你可以做的是:

callback.call( null, var1, var2 );

另外,请参阅 Harry 对代码中语法问题的回答。

另请注意,使用它var arr1 = [];而不是被认为是更好的形式var arr1 = new Array(),它们都是等效的,但第一个更短。

编辑:一个更简单的方法是简单地编写callback( var1, var2 ). 但是,如果您仍想使用.call,请参阅MDN以获取完整说明。

编辑:

thnx 寻求帮助,我们可以按照此答案中的说明使用它 callback.call( null, var1, var2, var3 ); 并使用

fun_name(function (var1,var2,var3) {        
        alert(var1);
        alert(var2);
        alert(var3);        
    });
于 2012-07-13T07:26:30.033 回答