在JS onload()函数中设置全局变量

时间:2017-04-06 17:35:02

标签: javascript jquery json

我想将Json数组的长度存储为全局变量,以使我的代码更加模块化。我试图在.onload函数中设置全局变量,但它不允许这样做。我尝试过使用globalTest变量。

var objectLength = 0;
var globalTest = 0;

$(document).ready(function() {
    establishConnection();
});


function establishConnection() {
    xttp = new XMLHttpRequest();
    xttp.open("GET", "http://exampleServerPath", true);
    xttp.send("null");

    xttp.onload = function() {
        var Json = JSON.parse(this.response);
        objectLength = Json.length;
        globalTest = 2; // this doesn't work         
    };

    globalTest = 4; //this works
}

我对JS很新,感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我认为问题在于xttp.onload部分。将其更改为xttp.onreadystatechange,然后检查就绪状态。

查看此example

编辑: 您的代码按预期工作,但您可能认为globalTest未更新。

如果你打电话给establishConnection(),然后立即尝试访问globalTest它仍然是0,因为AJAX请求尚未完成。

如果你做了

establishConnection();
setTimeout(function() {
    alert(globalTest);
}, 2000);

然后你应该看到你期望的值(假设你的ajax请求在不到2秒的时间内完成。