我在这里做错了什么?
var country = function () {
var tmp = null;
$.ajax({
'async': false,
'dataType': 'jsonp',
'url': "http://ipinfo.io",
'success': function (data) {
tmp = data.country;
}
});
return tmp;
}();
console.log(country);
打印null
async设置为false,所以应该有效吗?这有什么不对?
顺便说一句,如果我将console.log(data.country)
置于成功通话中,则会打印国家/地区正确
答案 0 :(得分:2)
答案 1 :(得分:0)
JavaScript是异步的。您的country方法在ajax调用成功返回之前返回tmp。
查看承诺或延期对象。
var country = function () {
return $.ajax({
'dataType': 'jsonp',
'url': "http://ipinfo.io"
});
}
country().done(function(data) {
console.log(data);
})
.fail(function(){
});
答案 2 :(得分:0)
var country = function () {
var tmp = null;
$.ajax({
dataType: 'json',
url: "http://ipinfo.io",
success: function (data) {
tmp = data.country;
},
async: false
});
return tmp;
}();