以下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()
以确保请求已完成,然后再继续。尽管如此,print
userip
在GET请求之后返回null,但是在ajax成功回调期间打印唯一的客户端IP。任何解释将不胜感激。提前致谢。
最佳答案
.done()需要回调。尝试换出
console.log(userip)
与
function() { console.log(userip); }