0

可能重复:
如何从函数的 AJAX 调用返回响应?

我有一个从在线文件中读取数值数据的功能。虽然文件被正确检索(由警报显示的值证明),但当我尝试将其设置为输出然后返回输出时,我得到一个未定义的结果。

我试图通过范围界定教程无济于事。我究竟做错了什么?

function readFileFromWeb() {
    var output;

    jQuery.get('http://domain.com', function(data) {
        alert(data);
        output = data;
    });

    return output;
}
4

2 回答 2

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函数时,您将需要使用相同的回调模式。

于 2013-01-17T14:59:44.003 回答
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;
}
于 2013-01-17T15:00:44.717 回答