2016-07-30 88 views
0

我有一個代碼如下所示。如何使用jQuery的全局變量?

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}); 
alert(globalVar) 

雖然第一個警報顯示數據的值,但第二個警報不顯示。似乎globalVar沒有正確地分配在get函數中。在這裏使用全局變量的正確方法是什麼?

+9

這更多的是與「Ajax」的異步方面,而不是變量的作用域。在獲取完成之前調用第二個警報的可能性很大。 – Devon

+0

是的,你是對的:)。 – pythonic

回答

3

可能會發生什麼事是你get()功能沒有完成你最後alert()是之前更新更好的方法被稱爲。爲了確保這些按順序發生,一旦收到文件,您可以將最後的alert()置於回調中。

那麼試試這個來代替:

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}).done(function() { 
    alert(globalVar) 
}); 
2

你可以試試這個

var globalVar = false; 

jQuery.ajax({ 
    type: "GET", 
    url: 'some.php', 
    success: function (data) { 
    globalVar = true; 
    }, 
    async: false // <- this turns it into synchronous 
});​ 

alert(globalVar); 

我在這種情況下

var globalVar = false; 

function getData(callback) { 
    $.ajax({ 
     url: 'jsOnChange.php', 
     type: 'GET', 
     success: callback 
    }) 
} 
getData(function(response) { 
    globalVar = true; 
    console.log(globalVar); 
}); 
+0

同步AJAX請求是最糟糕的想法。 – Xufox

+0

如果你有什麼更好的想法,請讓我知道並學習它。 xD投票後我的答案xD謝謝 –

+1

看到上面的重複目標。 – Xufox