小编典典

AJAX响应数据未保存到全局范围?

ajax

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

var somedata;

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

alert(somedata); // Undefined

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


阅读 222

收藏
2020-07-26

共1个答案

小编典典

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请求不会阻止后续代码运行。

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

2020-07-26