2013-11-26 32 views
0

我想读取函数外的变量。我正在使用API​​进行国家/地区检测并查找JSON供稿。我得到的结果很好,但我希望能够在该函数之外使用此结果,并且我已尽力,但无法理解如何解决此问题。我的代码尝试到目前为止。在成功回调之外读取ajax调用结果

var country; // defining country outside of function. 

jQuery.getJSON('https://api.wipmania.com/jsonp?callback=?', function (data) { 

    var country = data.address.country; 
    console.log(country) // this returns correct result 

}); // end location country check function 

console.log(country) // This is reading undefined as is not picking up the new var = country resulted from above function. 

如何在函数外使用新的结果国家变量?

谢谢

+0

删除第二个'var'(在函数内部)。 – gbs

+1

重要的是要注意的是,getJSON是一个**延迟函数**没有任何其他函数。它不像你期待的那样同步运行。 – Liam

+0

@PSL谢谢,我今天根本找不到答案。必须一直在寻找错误的关键字..Damm -1没有看到,无论如何..帮助大家 – Redwall

回答

1

在声明var country你遮蔽全球country。由于CD ..指出getJSON是异步的,所以你需要检查使用它

var country; // defining country outside of function. 

jQuery.getJSON('https://api.wipmania.com/jsonp?callback=?', function (data) { 

    country = data.address.country; 
    console.log(country) // this returns correct result 

}); // end location country check function 

console.log(country || "No country set yet, check back soon!"); 
+0

不是我认为的主要问题,但仍然是一个问题+1 – Liam

4

getJSON作品以异步方式之前,如果它已经被设置。

最后的console.log在回调之前被调用。

+0

这不是问题的根源(这是回调函数中的'var'),但这个_is_实际上是一个好点! – CompuChip

+0

他们是不同的'国家',所以在多个线上的笑话。 – Brian