我遇到下面显示的行未将变量存储到全局范围的问题:
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/