我仍然在努力处理函数,变量和范围。
我已经阅读了几篇文章"解释"这些概念,加上一些看似相关的帖子,但无法想出这一点。有人能告诉我如何访问函数外的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?
由于
答案 0 :(得分:5)
AJAX 异步。您的alert
需要内部回调函数。这不是变量范围的问题,当alert
执行时,变量根本没有设置,因为AJAX调用尚未完成。