javascript - jQuery AJAX 不会将数据存储在变量中

标签 javascript jquery ajax global-variables

以下代码:

jQuery.extend({
    getAnalytics: function() {
        var result = null;
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: '/master/analytics/reports',
            success: function(data) {
                result = data;
                console.log(result);
            }
        });
        console.log(result);
        return result;
    }
});

var results = $.getAnalytics();
console.log(results);

在控制台中显示:

{20181002: 0, 20181003: 0, 20181004: "2", 20181005: "9", 20181006: 0, 20181007: 0, 20181008: "2", 20181009: "3", 20181010: "1"}
null
null

我无法弄清楚我在要求 resultresults 都返回 null 时做错了什么,即使 result 在里面success 有一个 json 字符串。我不了解这里的变量。

最佳答案

我没有尊重 AJAX 调用的异步性质。它在名称中。

我通过执行以下操作修复了它。

success: function(data) {
            result = data;
            functionToPerform();
        }

function functionToPerform() {
    // code that depends on the data sent back from the Ajax request
    // fire this only after a successful AJAX request
}

关于javascript - jQuery AJAX 不会将数据存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52746373/

相关文章:

javascript - FP 方式的数组嵌套映射

javascript - 您可以使用 zone.js 提供自定义垫片/补丁吗?

php - 编辑表中的两列

jquery - 无法访问后端返回的JSON数据

javascript - RegExp 中的反向引用替换功能不起作用

javascript - 如何在阶乘计算时打印动态生成的乘法运算字符串?

javascript - 使用 BootstrapValidator 的动态表单

javascript - jQuery ajax 喜欢使用 iframe 上传文件

jquery - Safari 上的跨域 $.ajax 和 302 重定向

javascript - 来自 ajax 请求的 Jquery Ajax 表单