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 字符串解析$Objects为 JavaScript 对象。

而不是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 回答