2017-03-26 5 views
0

まずは申し訳ありませんが、これは初心者のための初心者回答です。珍しいJSON.parseパラメータ:JSON.parse(<?= data; ?>)

私はインターネットのどこかで見つけたこのjson.parseメソッドについて興味があります。

ので、コードは次のようである:

私が知りたいことはJSON.parse内のパラメータである--->それが何を意味するのか(<?= data; ?>)

私の知る限りではJSON.parseの構文はJSON.parse(text[, reviver])

おかげですので!

+1

これは、サーバーサイド注入の何らかの形のように見えます。したがって、JSの実行時に直列化できるように、そのブロック内に挿入されて配置されたサーバーからの値。 – ste2425

+1

^^例えば、 ' 'の部分はJavaScriptではなく、' JSON.parse'が解析できる文字列を出力するものです(おそらく、クライアントに送る前にサーバ上で処理されています)。 –

答えて

0

これはサーバー側の処理言語(known as Plates)です。dataは、サーバーからHTMLファイルに渡される変数です。ネイティブJavaScriptではありません。むしろ、それはクライアント側で変数のサーバーサイドレンダリングです。

<?= data; ?>は、変数が呼び出される時点でのdata変数の完全な内容をレンダリングします。あなたのケースでは、クライアント側のJavaScriptで解析されているJSON変数です。 <?= data; ?>は、dataの内容を文字列形式のJSON(例:JSON.stringify(data))の形式で返します。次に、JSON.parse()を出力に使用して、クライアント側のJavaScriptで使用可能な変数にします。

+1

EJSの書式は<%= user %>ですが、質問は

+0

です。前提は同じですが、私は2つの記号を混同しました。実際にどのような言語かわかるまでEJSへの参照を削除しました。ありがとうございました! –

0

EDIT:すばらしいGoogle検索では、これがPlatesというPHPテンプレート言語であることがわかります。 See here

これはテンプレートタグのように見えます。テンプレートタグは、変数の値を評価し、テンプレートがレンダリングされるたびにエクスポートされます。私は確信することはできませんが、一般的に、テンプレートは区切り文字を使って別のものを示すので、ここではそのように見えます。

この例では、この開始デリミタである<?=を使用しているので、dataという変数が出力されているとします。これは、ページがブラウザでレンダリングされる前に行われます。さらに重要なのは、この特定のスクリプトが実行される前です。したがって、テンプレートがレンダリングされるときに、データがいくつかのJSON文字列に解決され、スクリプトが実行されると、その文字列がJavaScriptオブジェクトに解析されるということです。

0

<?= data; ?>はphp変数である必要があり、クライアントサイドレンダリング時にサーバーから送信された有効なJSONで全体が置き換えられます。

関連する問題