2011-04-09 189 views
1

這不是我第一次使用Ajax和這樣的工作,我想使用jQuery函數$ .getJSON從函數內部不能訪問全局變量? (JavaScript)的

我寫了下面的:

var newIMG; 

function random_img(){ 
    $.getJSON('content/random.php',function (data){ 
     newIMG = data; 
    })  
    alert(newIMG.ERROR); 
} 

但由於某些原因在創建JSON請求後,我無法訪問newIMG變量。 以某種方式將它從$ .getJSON函數傳遞給random_img()函數也會很好(實際上更好)

這真的很奇怪,我無法弄清楚這裏有什麼問題。

http://i.stack.imgur.com/OShao.jpg 螢火蟲控制檯的截圖,可能會更好地解釋它。

在此先感謝你們。

+0

您還缺少一個';'後'})' – Hogan 2011-04-09 17:51:10

回答

6

這是因爲你在JSON請求返回之前試圖提醒(getJSON是異步的),所以當它第一次嘗試提醒它時,它是未定義的。

移動警報步入回調這樣:

$.getJSON('content/random.php',function (data){ 
    newIMG = data; 
    alert(newIMG.ERROR); 
});  
5

您對$ .getJSON調用是異步的,這意味着Ajax調用返回一個值之前alert(newIMG.ERROR)進行評估。您需要將警報發出呼叫回調中:

var newIMG; 

function random_img(){ 
    $.getJSON('content/random.php',function (data){ 
    newIMG = data; 
    alert(newIMG.ERROR); 
    });  
} 
+0

天哪,爲什麼我沒有認爲的:L嗯,還是謝謝你,善良先生 – CookieMonster 2011-04-09 17:51:40