2016-09-25 22 views
0

JavaScriptの新機能です。私がやろうとしていることの1つは、特定の環境変数、特にホスト名を持つことができることです。開発中は、localhostになります。プロダクションでは、それはまったく違うでしょう。JavaScript:ページ初期化時にアプリケーション環境変数を読み込む最良の方法は何ですか?

など、値をロードするために使用することができますJSONファイルを使用してどのように私はすでに見てきた

value.json

{ 
    "myVal": "production" 
} 

jQueryの$ .getJSON()生命維持機能の(一部をその問題はgetJSON()は非同期であるということである

$.getJSON("value.json", function(data){ 
    myVal = data.myVal; //Not globally assigned, assigned to field in enclosing function 
    console.log(data.myVal); 
}); 

)不変フィールドを持つオブジェクトを作成します。そのデータをロードする時間は最小限に抑えられますが、ユーザーがホスト名値のロードを終了する前にページ上のリンクをクリックできるシナリオが作成されます。

これを処理する最善の方法はなんですか?この値を常に利用できるようにするにはどうすればよいですか?

セッショントークンはすでに要求/応答メカニズムの一部であり、常に利用可能であるため、これまでセッショントークンを使用していました。署名されたトークンなので、その値は安全になり、誰かが悪意を持ってこれらの値を変更することはできません。

しかし、これはハックインのようなものです。だから誰かがそれについてもっと良い、よりエレガントな方法を知っているのだろうか?

ありがとうございました。

+2

とにかく、ホスト名はいつも 'window.location.hostname'で利用できないのですか?クライアント側でサーバサイド変数が必要な場合は、マークアップで出力してJSで取得してください。 – adeneo

+0

@adeneo私が言ったように、JavaScriptには比較的新しいことを教えてくれてありがとう。これは私の最初の完全なプロジェクトです。あなたがマークアップでそれらを出力することによって何を意味するかについては、それをもっと徹底的に説明できますか? – user2223059

+0

あなたのサーバーはとにかくページを送信しているので、サーバーから送信される前にクライアント側で必要なデータをページに追加するだけで、ajaxを使う必要はありません。下記のPHPの例を示す答えを見てください。 – adeneo

答えて

1

私がよく使うアプローチは、バックエンドから変数をインポートすることです。 たとえば、PHPを使用している場合は、変数をechoにするだけです。 には次のような<script>を入れることができ、CONFIGはどこでも利用できます。

<script> 
var CONFIG = { 
    host: "<?php echo $host; ?>", 
    otherConfig: "<?php echo $otherConfig; ?>" 
}; 
</script> 
関連する問題