我遇到下面显示的行未将变量存储到全局范围的问题:

var somedata;

$.ajax({
    cache: false,
    url: verification_url,
    success: function(data){
        somedata = data;
    }
});

alert(somedata); // Undefined

我究竟做错了什么?我需要将其包装到单独的函数中还是什么?

最佳答案

alert() 代码在收到 $.ajax 的响应之前运行。

这就是为什么它是 undefined

var somedata;

$.ajax({
    cache: false,
    url: verification_url,
    success: function(data){
        somedata = data;

        alert( somedata );   // 2. this will occur after the response is received
    }
});

alert(somedata); // 1. this will occur first

在这里,您可以看到警报的发生顺序不正确。默认情况下,AJAX 请求不会阻止后续代码运行。

这就是拥有回调方法的全部目的。它是一种在适当的时候被调用的方法,而不是依赖于同步执行。

关于jquery - AJAX-响应数据未保存到全局范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6684014/

10-10 00:23