簡體   English   中英

在javascript中將數據從局部變量傳遞到全局

[英]Tranfer data from local variable to global in 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); 在if條件中,或用一些值替代地初始化變量。 似乎您的語句在被填充任何值之前就已被調用。

XMLHttpRequest是異步的,因此當您嘗試將myJson變量寫入控制台時,它尚未完成。 將其包裝在一個函數中,並在XMLHttpRequest完成后調用該函數。

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;
        writeToConsole();
    }

}

function writeToConsole() {
    console.log(myJson);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM