jQuery函数,变量和范围

时间:2014-02-17 17:43:04

标签: javascript jquery

我仍然在努力处理函数,变量和范围。

我已经阅读了几篇文章"解释"这些概念,加上一些看似相关的帖子,但无法想出这一点。有人能告诉我如何访问函数外的vars ip / prov / country

这是工作代码(vars访问 in fn):

$.get("http://ipinfo.io", function (response) {
    var ip, prov, country;
    ip = response.ip;
    prov = response.region;
    country = response.country;
    alert( 'IP: '+ip+ ' ** Prov: ' +prov+ ' ** Country: ' +country );
}, "jsonp");

但是,我想访问函数外部的变量,以便稍后使用。

这在我的网站上无效(所有项目显示为"未定义"):

var ip, prov, country;
$.get("http://ipinfo.io", function (response) {
    ip = response.ip;
    prov = response.region;
    country = response.country;
}, "jsonp");
alert( 'IP: '+ip+ ' ** Prov: ' +prov+ ' ** Country: ' +country );

然而,它在this jsFiddle中工作得很好!

此外,这不起作用(全部未定义):

var ip, prov, country;
$(function(){
    $.get("http://ipinfo.io", function (response) {
        ip = response.ip;
        prov = response.region;
        country = response.country;
    }, "jsonp");
    alert( 'IP: '+ip+ ' ** Prov: ' +prov+ ' ** Country: ' +country );
}); //END document.ready

我必须在我的网站上做什么才能访问$ .get函数之外的ip / prov / country vars?

由于

1 个答案:

答案 0 :(得分:5)

AJAX 异步。您的alert需要内部回调函数。这不是变量范围的问题,当alert执行时,变量根本没有设置,因为AJAX调用尚未完成。