使用外部网址

时间:2015-11-07 16:38:20

标签: jquery json ajax asynchronous

我试图找出为什么我无法从ajax请求中获取变量值。这是我的代码:

country_locator = function() {
    var country_iso;

    $.getJSON("https://api.wipmania.com/jsonp?callback=?", "", function(json) {
        country_iso = json.address.country_code;
    });

    return country_iso;
}

我也尝试过:

$.ajax({
        url: "https://api.wipmania.com/jsonp?callback=?",
        async: false,
        dataType: "json",
        success: function(data) {
            country_iso = data.address.country_code;
        }
    });

var country_iso;
country_locator = function() {
    $.getJSON("https://api.wipmania.com/jsonp?callback=?", "", function(json) {
        country_iso = json.address.country_code;
    }).success/complete(function() {
        return country_iso;
    });
}

但是alert(country_locator());我得到一个未定义的变量错误。

我找到了这个链接:Get the variable of a json request outside the function (jquery)但是没有设法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

因为$.getJSON是异步函数。 country_iso将无法填写您的请求ajax complete。

我建议使用deferred

来执行此操作
var country_iso;
country_locator = function() {    
    $.getJSON("https://api.wipmania.com/jsonp?callback=?", "", function(json) {
        country_iso = json.address.country_code;
    });
}

country_locator().success(function() {
    // do your logic here and use `country_iso` variable here.
});

Read More About Deferred

Read More About getJSON