2011-07-17 12 views
0

私のウェブサイトの検証メカニズムを作成しています。いくつかのコードはJavascriptとajaxで(ほとんどの長さの)文字列を検証するために使用されます。そして、他のコードはサーバー側でPHPで使われています。PHPとJavascript/AjaxのJSONデータを共有

PHPとJavascriptの両方で同じ変数を使用する必要があります(例:MAX_USERNAME_LENGTH)。 彼らは同期しているので、開発時間を節約できます。

私はJSONの使用を考えていました。 しかし、少しresearhingた後、私は気づい:これはいくつかの理由で../includes/vars.jsonとしてローカルの場所にアクセスしないだろう、といくつかの理由のために404を返すスターター用

$.getJSON("http://myurl.com/vars.json", function(json) { 
    alert(json['MAX_USERNAME_LENGTH']); 
}) 

、....

....私は$(document).ready(function()でこれを置けば、すべてのコードが実行されます、考えていたが、ネットワークが遅かった場合VARS自体がロードされなかったであろう、単に何かのリクを行う方法はありますE:

var json=parseJsonFromLocalFile("../includes/vars.json"); 

私は、PHPのためにも、これを必要とするが、そこに私はそれが事前にjson_decode() 感謝を使用して容易になるだろうと思います!

+1

ローカルファイルはどういう意味ですか?クライアント側かサーバー側か? – bcoughlan

+0

Oh soryy。私はサーバー側を意味しました。ファイルをインクルードし、オブジェクトモデル全体と同期させたい。私は、varsをインクルードして使用したいのですが、前の例では、varsはネットワークの待ち時間のために読み込まれずに使用される可能性があります。 – Ted

答えて

2

あなたはJSONの代わりにJavaScriptファイルを作成することができます - 同じように内容のPHPファイルを作成し、その後、PHPの配列にすべての変数を定義します。

var config = <?php echo json_encode($config); ?>; 

、それが好きなロード:

<script type="text/javascript" src="../includes/vars.php"></script> 

vars.jsは、より良い名前だろうが、あなたのサーバがPHPとして*の.jsファイルを処理するために知っている必要があります。)これは、同期、あなたの変数をロードします

非同期JSONのロードよりも簡単にグローバルスコープに変換できます。

+0

これは素晴らしいアプローチですが、私は同じPHPファイルをPHP側に提供する必要があるだけです。これは、require_once( "vars.php");それはvar config = partでコンパイルされません。 – Ted

+0

私は:GETメソッドを使用し、それに応じてコードを設定することを意味しましたか? <?php if($ _ GET ['セレクタ'] == 'javascript') echo 'var json ='; if($ _ GET ['selector'] == 'php') \tエコー '$ json ='; echo '{"MAX_USERNAME_LENGTH": "12"、 "BOX_COLOR":if(($ _GET [' selector '] ==' javascript ')||($ _GET [' selector '] ==' php ' "#254ff3"} '; – Ted

+0

しかし、ここに新しい問題があります。私は、jsファイルの#varsファイルを#includeする必要があります。 – Ted