以下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); }

09-25 17:24