Javascript 变量不保留值

标签 javascript jquery ajax

Possible Duplicate:
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;
}

最佳答案

这是应该如何通过回调函数完成的。

function readFileFromWeb(callback) {
    jQuery.get('http://domain.com', function(data) {
        callback && callback(data);
    });
}

// ...

readFileFromWeb(function (data) {
    alert(data);
});

这是因为 jQuery.get 是一个异步函数,即它在执行时不会阻塞,因此会立即返回。这实际上就是 jQuery.get 函数需要回调函数的原因,以便在 AJAX 查询返回后它会触发回调函数。

因此,在实现您自己的 readFileFromWeb 函数时,您需要使用相同的回调模式。

关于Javascript 变量不保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381814/

相关文章:

javascript - 将对象的特定属性转换为对象数组

javascript - 添加未找到结果的自定义消息

javascript - Ajax - JQuery,数组到查询字符串

javascript - 从 javascript ruby​​ on Rails 调用 Controller 方法

javascript - RxJS bufferWithCount() 不会因超时而暂停

javascript - 如何配置 d3-cloud 以在 Angular2 中拥有链接?

javascript - 为什么 JS 调用不接受传递的变量?

c# - 将一些 JavaScript 转换为 JQuery

jquery - jquery ajax函数中的多个数据变量

javascript - 使用另一个网页中的按钮更改一个网页中的 div