我遇到下面显示的行未将变量存储到全局范围的问题:
var somedata; $.ajax({ cache: false, url: verification_url, success: function(data){ somedata = data; } }); alert(somedata); // Undefined
我究竟做错了什么?我需要将其包装到单独的函数中还是什么?
该alert()代码在收到响应之前运行$.ajax。
alert()
$.ajax
这就是为什么undefined。
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请求不会阻止后续代码运行。
这就是拥有 回调 方法的全部目的。该方法在适当的时间被调用,而不是依赖于同步执行。