例如,我有一个函数:
var f1 = function(arg) {
var a;
$.ajax({
...
success: function(data) {
a = f2(data);
//return a;
}
});
//return a;
}
var f3 = function() {
a = f1(arg);
}如何在AJAX获取f1中的data后返回a
发布于 2012-01-28 07:16:53
您不能返回ajax请求的结果,因为请求是异步的(而同步ajax请求是一个糟糕的想法)。
最好的办法是将您自己的回调传递到f1中
var f1 = function(arg, callback) {
$.ajax({
success: function(data) {
callback(data);
}
});
}然后像这样调用f1:
f1(arg, function(data) {
var a = f2(data);
alert(a);
}
);发布于 2012-01-28 07:17:10
简短、简单的答案是:你不能。
您可以使a成为全局的,但您会受到时间问题的影响。
更好的选择是:
.when/.then construct,或者发布于 2012-01-28 07:17:38
要做到这一点,最简单的方法是同步ajax调用。这意味着在f1函数中,使用async: false设置ajax调用,以便函数在调用完成并返回数据之前不会继续执行。
https://stackoverflow.com/questions/9041321
复制相似问题