LoginSignup
45
47

More than 5 years have passed since last update.

getJSONでグローバル変数に値をセット

Last updated at Posted at 2012-12-26

201402追記

これは全く良い方法ではないです(コメント参照)
なお同期通信にするのもあまり筋の良い方法ではなくて、コールバックで順序を保障するのが普通です。
本気で設定ファイルとして読み込みたいなら、renderingの段階で渡すのがよいかもしれません。

概要

JQueryのgetJSONは非同期通信なので、JSONで書いた設定ファイルから値を取ろうとしても、取れないまま処理が進んでしまう。
コールバック関数の中で処理を完結させれば問題ないが、グローバル変数に値をセットしたい場合は、同期通信にしてからgetJSONする必要がある。
具体的には、$.ajaxSetup({async: false});を使う。
気付かないまま詰まったので参考にどうぞorz

コード

sample.js
    var hoge
    function setPreference(){
        $.ajaxSetup({async: false});//同期通信(json取ってくるまで待つ)
        $.getJSON("preference.json", function(data){
            hoge = data.param;
        });
        $.ajaxSetup({async: true});
    }
45
47
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
47