我在函數外部傳遞變量時遇到了一些問題。 這似乎很簡單,但我有一些問題。從本地變量到全局在javascript中傳輸數據
var myJson;
var url = "https://openbook.etoro.com/api/Markets/Symbol/?name=" + symbol;
var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));
xhr.onreadystatechange = XHRhandler;
xhr.open("GET", "proxy.php?url=" + url, true);
xhr.send(null);
function XHRhandler() {
if (xhr.readyState == 4) {
var json;
if (JSON && JSON.parse) {
json = JSON.parse(xhr.responseText);
} else {
eval("var json = " + xhr.responseText);
}
console.log(json);
myJson= json;
xhr = null;
}
}
console.log(myJson);
我需要的是將數據從局部變量json傳遞給全局myJson; 但是,當我做console.log(myJson)我得到未定義。 問題是什麼?
謝謝
由於console.log(myJson);'沒有等待xhr完成而立即執行。僅當數據從服務器到達時纔會調用XHRhandler。 –
可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Quentin
您可以也嘗試'promise'並在其回調中設置變量。 –