我尝试过在其他问题中看到的各种解决方案,但未成功记录data.ip
。
当我记录foo
时,我只返回undefined
。为什么ip
未将async
属性设置为false
?
TY
$.ajaxSetup({
async: false
});
var getIp = function() {
var ip;
$.getJSON('//freegeoip.net/json/?callback=?', function(data) {
ip = data.ip;
});
return ip;
}
var foo = getIp();
console.log(foo);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 0 :(得分:2)
您没有正确实施AJAX。我更改了您的功能,以便返回Promise
(请注意函数中的return
个关键字)。在.then()
内,你可以传递一个回调函数,该函数将在Ajax
完成后执行。$.getJSON()
是Ajax
(http://api.jquery.com/jquery.ajax/)的实现
注意:强>
我强烈建议您不要在async: false
内使用xhr / Ajax
,因为它会降低您网站的速度。更好地使用下面的代码:
var getIp = function() {
var ip;
return $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
return data.ip;
});
}
getIp().then(function(res) {
console.log(res);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>