@marc(間接的)点として、ajax呼び出しとイベントモデルの性質を理解する必要があります。 JSファイルが解析されるとすぐにajax呼び出しが実行され、結果はと非同期で返されます。したがって、コードのタイムラインは次のようになります
00 set global = []
01 AJAX call /someurl/ -------------------\
02 check global /* it's empty */ \
03 do something else [process AJAX call on server, send result]
... /
42 AJAX call is completed <----------------/
43 call success ----------------------------------> global.push(result)
44 at this point of time you can access global
これは実行時ではなくタイムラインです。 AJAX呼び出しと応答の間の時間は、タイムアウトやサーバー側のエラーの場合を含めて任意である可能性があります。
どうすればよいですか?
1)JSの通常solurtion - あなたはすでにでき
1.1のいずれかを持って、コールバック、成功関数が)グローバル設定および他の関数を呼び出す、または
1.2)は、データを用いて所望の動作を行います
2)イベント - これが99%に避けるべきである - あなたは@marcが示唆するように、jQueryのイベント機構に
3)同期呼び出しを読んで、コードの複数の部分のデータを使用すると仮定した場合、より良いですケース。私が知っている唯一のケースは、サードパーティーのソースからの必須データを要求しなければならない場合です。この場合でも、サーバー上で実行できます(少なくとも同期AJAXは受け入れられますが)
コード音がする。また、JSONが有効であることを確認してください(http://jsonlint.com/) – ctrlShiftBryan