函数将数组返回到另一个函数>未捕获的TypeError

时间:2014-05-07 13:44:08

标签: javascript ajax return-value return-type

我有一个函数,它生成ajax请求并返回3个值的数组。 稍后在另一个函数中调用此函数,然后出现以下错误:

  

未捕获的TypeError:undefined不是函数

当我将第一行更改为第二行到array = one();时,它只运行一次,每个其他函数调用都以下一个错误结束:

  

未捕获的TypeError:对象不是函数

任何人都可以解释一下,这两个错误是怎么回事!?


我的代码:

function one() {
        var result = null;
         var scriptUrl = [...];
         $.ajax({
            url: scriptUrl,
            type: 'get',
            dataType: 'html',
            async: false,
            success: function(data) {
                [...]
                val1 = [...];
                val2 = [...];
                val3 = [...];
            }
         });
         return [val1, val2, val3];
    }

 function two() {
            var array = one();
            var val5 = array[0];
            var val6 = array[1];
            var val7 = array[2];
        }

1 个答案:

答案 0 :(得分:1)

将我的代码更改为以下(工作):

function one(callback) {
        var result = null;
         var scriptUrl = [...];
         $.ajax({
            url: scriptUrl,
            type: 'get',
            dataType: 'html',
            success: function(data) {
                [...]
                var val1 = [...];
                var val2 = [...];
                var val3 = [...];
                var result = [val1, val2, val3];
                callback(result);
            }
         });
    }

function two(result) {
    var val1_from_ajax = result[0];
    var val2_from_ajax = result[1];
    var val3_from_ajax = result[2];
}

one(two);

快速解释:
我的ajax调用结果传递给成功,处理结果。之后,直接调用基于来自ajax的已处理返回值的函数(带来这些值)。基于ajax返回值的函数由paremeter传递,因此在我的示例中,我调用one(two);,这意味着成功中的callback(result);two(result);希望这澄清了一点:)