【问题标题】:multiple array return using ajax() on success : jquery成功时使用 ajax() 返回多个数组:jquery
【发布时间】:2012-07-13 00:40:44
【问题描述】:

嗨,朋友们,我有一个 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 个变量,但我有数组和其他一些变量,我如何返回所有数组和变量,如果没有,还有其他方法可以返回多个数组。

谢谢

【问题讨论】:

  • 你有一个未闭合的引号。
  • 请忽略这只是一个更好理解的例子

标签: jquery arrays return


【解决方案1】:

你可以做的是:

<del>callback.call( null, var1, var2 );</del>

另外,请参阅 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);        
    });

【讨论】:

  • 好的谢谢让我试试这个我记住你提到的另一件事 thnx
  • 还有一件事要问,你能不能用参数编写 callback.call() 的语法
  • 好的,那么我将如何获得这个值你能告诉我当我传递单个变量时我以这种方式调用这个函数--> var total; parseData(函数 (x) { alert(x); });
  • 你能告诉我任何链接或任何东西来实现你的回调(var1,var2)
  • 需要将哪些变量传递给回调?
【解决方案2】:

你的函数中的语法错误我已经更正了,请检查一下

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.");
        }
   });      

}

【讨论】:

  • 请忽略语法,只是我问如何返回多个数组和变量,就像我在这个回调中所做的一样。call(null,var1);有没有可能
猜你喜欢
  • 2014-07-07
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2012-02-20
  • 2011-11-24
相关资源
最近更新 更多