我想将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很新,感谢任何帮助!
答案 0 :(得分:0)
我认为问题在于xttp.onload
部分。将其更改为xttp.onreadystatechange
,然后检查就绪状态。
查看此example。
编辑:
您的代码按预期工作,但您可能认为globalTest
未更新。
如果你打电话给establishConnection()
,然后立即尝试访问globalTest
它仍然是0,因为AJAX请求尚未完成。
如果你做了
establishConnection();
setTimeout(function() {
alert(globalTest);
}, 2000);
然后你应该看到你期望的值(假设你的ajax请求在不到2秒的时间内完成。