2013-11-26 34 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