我有一个函数,它生成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];
}
答案 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);
希望这澄清了一点:)