2015-01-08 41 views
0

我想給出全局變量「title」的值(在函數getInfo中定義),但我在alert(title)時得到的值是「undefined」。當然,我可以把警報放在最後一個功能,但爲什麼我不這樣工作?Javascript初學者 - 全局變量不工作

//[...] 
var title;//global var 

$(document).ready(
function(){      
    $.getJSON(url, displayImages)//open func displayImages 
}); 

function displayImages(data) {                                    
    $.each(data.photoset.photo, function(i,item){ 
      $.getJSON(url+item.id+"&format=json&jsoncallback=?", getInfo);//open func getInfo 
      alert(title);//output: undefined 

    });  

} 

function getInfo(data2){ 
    title = data2.photo.title._content;//get value of title from json 

} 
+0

的原因是'警報(標題)'之前'getInfo'執行。爲什麼因爲'getJSON'花了一些時間來獲取數據,但是當它執行'alert(title)'時,這就是爲什麼。 – neo

回答

1

$.getJSON是異步的,這意味着,如果你把警報在getInfo方法,它會的alert(title)後火即使它是前行。

你可以解決這個問題這樣:

$.getJSON(url+item.id+"&format=json&jsoncallback=?", function(data) { 
    getInfo(data); 
    alert(title); 
});