2017-04-06 41 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に変更し、読み取り値を確認します。

これをチェックアウトするexample

編集: コードは正常に動作しますが、globalTestは更新されていない可能性があります。

establishConnection()に電話してすぐにglobalTestにアクセスしようとすると、AJAX要求がまだ完了していないため、依然として0になります。

あなたは

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

を行った場合、あなたはあなたのAJAX要求が2秒未満で完了すると仮定すると(期待値が表示されるはずです。

+0

私はこれまでにonreadystatechangeでそれを持っていたので、これには何の影響もないことを確認できます – Mephistofee

関連する問題