我正在研究一个自定义框架。我找到了像
这样的代码<script type="text/javascript">
<?php
echo "ABC.Variables.Objects = eval('(" . $Objects . ")');";
?>
</script>
在看到来源中我看到了类似
的代码ABC.Variables.Objects = eval('({"success":true,"results":11})');
在这种情况下使用EVAL的主要目的是什么?是在服务器端的客户端工作吗?
答案 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对象。