可能重复:
How to return the response from an AJAX call from a function?
我有一个函数可以在线读取文件中的数值数据。虽然文件被正确检索(由警报显示的值证明),但当我尝试将其设置为输出然后返回输出时,我得到一个未定义的结果。
我试图通过范围教程无济于事。我做错了什么?
function readFileFromWeb() {
var output;
jQuery.get('http://domain.com', function(data) {
alert(data);
output = data;
});
return output;
}
答案 0 :(得分:3)
以下是通过回调函数完成的方法。
function readFileFromWeb(callback) {
jQuery.get('http://domain.com', function(data) {
callback && callback(data);
});
}
// ...
readFileFromWeb(function (data) {
alert(data);
});
这是因为jQuery.get
是异步函数,即它在执行时不会阻塞,因此立即返回。这就是jQuery.get
函数需要回调函数的原因,因此一旦AJAX查询返回它就会触发你的回调函数。
因此,在实现自己的readFileFromWeb
函数时,您需要使用相同的回调模式。
答案 1 :(得分:1)
它是异步的,我已经评论了你的代码,以帮助你理解事情发生的顺序。
function readFileFromWeb() {
//1. create variable.
var output;
//2. make ajax call.
jQuery.get('http://domain.com', function(data) {
alert(data);
//4. set variable from ajax callback
output = data;
});
//3. return variable.
return output;
}