0

カスタムフレームワークを勉強しています。のようなコードを見つけました

<script type="text/javascript"> 
<?php
    echo "ABC.Variables.Objects = eval('(" . $Objects . ")');";
?>
</script>

ソースを見ると、次のようなコードが表示されました

ABC.Variables.Objects = eval('({"success":true,"results":11})');

この場合、EVAL を使用する主な目的は何ですか? サーバー側のクライアント側で動作していますか?

4

3 に答える 3

3

evalここでは、json 形式の文字列を javascript オブジェクトに変換するために使用します。これを行う正しい方法はJSON.parse(str)、古いブラウザ用の json 解析関数を使用することです。

ただしeval、そのような場合は使用する必要JSON.parse()はありません。

あなたはただする必要があります:

<script type="text/javascript">
  // of course $Objects needs to be a valid json string, eg the result of json_encode 
  ABC.Variables.Objects = <?php echo $Objects ?>;
</script>

ソースには次のように表示されます。

ABC.Variables.Objects = {"success":true,"results":11};

評価は必要ありません。

于 2012-10-04T11:13:56.610 に答える
1

PHP には、クライアント ブラウザによって実行される JavaScript コードが出力されています。JavaScript ( PHP ではありません) では、eval() もともと PHP 変数に格納されていた JSON 文字列を$ObjectsJavaScript オブジェクトに解析するために呼び出されます。

というよりeval()、本当に呼んでいるはずJSON.parse()です。

もっと良かったでしょう:

echo "ABC.Variables.Objects = JSON.parse('" . $Objects . "');";
于 2012-10-04T11:14:26.247 に答える
0

ここで、eval 関数は json 文字列を json オブジェクトに変換します。

于 2012-10-04T11:19:30.763 に答える