2017-09-02 7 views
0

に、ファイルに格納されます私はこのように、Switches.jsジャバスクリプトファイルを持っている:JavaScriptオブジェクトは、PHPの変数

//GLOBAL switches 
//Change the values accordingly 

var SWITCHES = { 
    uber:  true, //Uber 
    social:  true, //Social media pulgins 
    g_charts: true, //Google Charts 
    g_captcha: true, //Google Captcha 
    g_analytics: true, //Google Analytics 
    data_base: true, //Inserts user input data into DataBase 
    print:  true, //Print option 
    pdf:   true, //Download PDF report option 
    https:  true //true for https, false for http 
}; 

これは、JSファイルは私のサーバーに保存されています。

オブジェクトとそれらのプロパティの1つをPHP変数に取得する方法はありますか?私は、PHPの関数file_get_contentsとの周りにする必要がありますが、私はどのようにJSファイルとその変数SWITCHESのコメントを考慮に入れますか?

$file_content = file_get_contents("Switches.js"); 
//some stuff 
$http_switch = $SWITCHES[https]; 

純粋にサーバー側で実行されるため、AJAXもjQueryもオプションです。

+0

はそれではJavaScriptですJSONではなく、 'json_decode()'を使うことはできません。代わりに 'Switches.js'を' Switches.json'に変換するのはどうですか? – Svenskunganka

+0

@Svenskunganka、返信ありがとうございます。そして、私はそのようなJSのSWICTHES変数を私のグローバルJSスコープでどのように使うことができますか? –

+0

同等のJavaScript関数 'JSON.decode()'を使用してJavaScriptオブジェクトに変換します。 – Svenskunganka

答えて

2

Switches.jsはJavaScriptであり、JSONではないため、json_decode()は使用できません。代わりに、JSONに変換し、デコード/それをクライアント側とサーバー側の両方を解析する必要があります。

PHPでは、あなたは何だろう:

$data = file_get_contents("Switches.json"); 
$switches = json_decode($data); 

そしてクライアント側あなたはAJAXを経由して、それをフェッチそして、解析:

$.get("/Switches.json", function (data) { 
    var switches = JSON.parse(data) 
}) 

あなたSwitches.jsonファイルは次のようになり(JSONファイルは、コメントがあってはならない):

{ 
    "uber": true, 
    "social": true, 
    "g_charts": true, 
    "g_captcha": true, 
    "g_analytics": true, 
    "data_base": true, 
    "print": true, 
    "pdf": true, 
    "https": true 
} 
+0

AJAXなしで同期的にフェッチすることは可能ですか?これらの変数は、他のすべてのJSファイルですぐに必要になります。 –

+0

'varスイッチ= JSON.parse($。get("/Switches.json "))'でええ。しかし、同期要求は推奨されないので、それを使用しないことをお勧めします。 MDN docs:* Gecko 30.0(Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)以降、メインスレッドの同期要求はユーザーエクスペリエンスに悪影響を与えるため、非推奨になりました* – Svenskunganka

+0

すべてのJSファイルが最後に読み込まれます「」の直前にあるため、ユーザーエクスペリエンスに問題はありません。 –

関連する問題