2017-04-06 100 views
0

我想將Json數組的長度存儲爲全局變量,以使代碼更加模塊化。我試圖在.onload函數中設置全局變量,但它不會允許這樣做。我曾嘗試使用globalTest變量。在JS onload()函數內設置全局變量

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,然後檢查readystate。

看看這個example

編輯: 您的代碼按預期工作,但也許您認爲globalTest未更新。

如果您要撥打establishConnection(),然後立即嘗試訪問globalTest,它仍然爲0,因爲AJAX請求尚未完成。

如果你沒有

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

那麼你應該看到期望(假設你的Ajax請求在不到2秒鐘就完成了價值。

+0

我可以證實這一點對我沒有任何影響,因爲我之前曾使用過.onreadystatechange – Mephistofee