我知道这看起来像是一个重复的问题而且相信我,我读了所有这些并尝试了所有内容,但我无法使其工作(JQuery 1.11.0):
function gip(){
var ccode;
$.ajax({
url: 'http://freegeoip.net/json/?callback=?',
dataType: 'json',
crossDomain: true,
async: false,
success: function (data) {
alert(data.country_code);
ccode = data.country_code;
},
error: function(error) {
alert(error)
return '';
}
});
alert(ccode);
return ccode;
}
无论我做什么,alert(ccode)
在alert(data.country_code)
之前触发,因此我的返回值未定义。不幸的是,我的知识是有限的,我无法看到我如何在异步模式下做我需要的。我只需要返回data.country_code
。
答案 0 :(得分:3)
首先,由于您使用的是jsonp,因此无法执行任何操作:(
从1.8版开始,不再支持async:false
您需要等待success
处理程序获取您要查找的任何值。
答案 1 :(得分:3)
无法发送同步jsonp请求。
JSONP请求是通过将<script>
标记附加到<head>
标记来完成的。由于在DOM准备就绪后不可能强制<script>
标记同步加载,因此不可能强制jQuery jsonp请求同步。