以下 jQuery 代码尝试在 ajax GET 请求回调期间将客户端的 IP 地址存储在全局变量中。
代码
var userip = null;
$.ajax({
url: "http://ipinfo.io",
type: 'get',
dataType: 'jsonp',
async: false,
success: function(data) {
userip = data.ip;
console.log(userip); // prints unique ip address
}
}).done(console.log(userip)); // prints null
知道 GET 请求通常是异步执行的(但需要另外执行),我在 JSON 规范中标记了 async: false
。为了增加措施,我调用 done()
以确保请求在继续之前已完成。
尽管如此,打印 userip
在 GET 请求后返回 null,但在 ajax 成功回调期间打印唯一的客户端 IP。
任何解释将不胜感激。提前致谢。
最佳答案
.done() 需要回调。尝试换掉
console.log(userip)
与
function() { console.log(userip); }
关于javascript - 在回调期间设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865013/