$ .ajax async:false trouble

时间:2014-03-18 16:54:57

标签: jquery ajax asynchronous

我知道这看起来像是一个重复的问题而且相信我,我读了所有这些并尝试了所有内容,但我无法使其工作(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

2 个答案:

答案 0 :(得分:3)

首先,由于您使用的是jsonp,因此无法执行任何操作:(

从1.8版开始,不再支持async:false

您需要等待success处理程序获取您要查找的任何值。

答案 1 :(得分:3)

无法发送同步jsonp请求。

JSONP请求是通过将<script>标记附加到<head>标记来完成的。由于在DOM准备就绪后不可能强制<script>标记同步加载,因此不可能强制jQuery jsonp请求同步。