在这种情况下,eval的目的

时间:2012-10-04 11:12:30

标签: php javascript eval

我正在研究一个自定义框架。我找到了像

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

在看到来源中我看到了类似

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

在这种情况下使用EVAL的主要目的是什么?是在服务器端的客户端工作吗?

3 个答案:

答案 0 :(得分: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};

不需要评估。

答案 1 :(得分:1)

PHP输出了由客户端浏览器执行的JavaScript代码。在JavaScript(而不是PHP )中,调用eval()来将最初存储在PHP变量$Objects中的JSON字符串解析为JavaScript对象。

而不是eval(),它确实应该调用JSON.parse()

本来会更好:

echo "ABC.Variables.Objects = JSON.parse('" . $Objects . "');";

答案 2 :(得分:0)

这里,eval函数将json字符串转换为json对象。