2015-02-05 52 views
-1

這可能是一個瘋狂的愚蠢問題,但我不明白爲什麼東西變量沒有被重置。這是我有什麼:

var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 

     }); 

    console.log(things) 

每當我做控制檯日誌內的功能,它的作品。當我將它從功能中取出時,它不起作用。我以爲我在全球範圍內設置這些東西,但顯然不是?

+1

AJAX是異步的(這是第一個A代表的)。您的'console.log()'在請求返回之前運行 – blgt 2015-02-05 20:14:22

+0

.get是一個回調函數。所以當ajax請求返回時調用它。同時代碼繼續,console.log已被觸發 – 2015-02-05 20:14:35

+0

嘿,非常感謝!那麼我將如何實現這一點,有沒有辦法讓我等待它完成? – Jake 2015-02-05 20:15:42

回答

-3
var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 

     }).done(function() { 
     console.log(things); 
     }); 

是相同

var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 
     console.log(things); 
     }); 

傳遞函數,如第二PARAM成$.get,它會被稱爲當AJAX請求是succesfull(又名狀態= 200);

如果你想在外面使用它,你必須使用done()方法,並且如果成功,第二個錯誤和第三個總是被調用,則會調用第一個參數(函數)。