我们正在构建一个Symfony 2应用程序,从控制器发送一些数据来查看:
调节器
$user = array( 'configuration' => array( 'levels' => array( 'warning' => 0.05,'danger' => 0.10,),); return $this->render( 'MyWebsiteBundle:Core:searchResults.html.twig',array( 'userJSON' => json_encode($user) ) );
视图
<script language="javascript"> user = $.parseJSON("{{ userJSON }}"); </script>
结果
在dev上,结果看起来像这样,按预期工作:
user = $.parseJSON("\x7B\x22configuration\x22\x3A\x7B\x22levels\x22\x3A\x7B\x22warning\x22\x3A0.05,\x22danger\x22\x3A0.1\x7D\x7D\x7D");
另一方面,在prod上,结果以不同的方式编码,从而在控制台中显示错误:
user = $.parseJSON("{"configuration":{"levels":{"warning":0.05,"danger":0.1}}}");
控制台错误:未捕获语法错误:意外的令牌&
什么产生这个差异?
编辑:另外查看@ Lulhum的解决方案.如果它更好,最好选择它作为正确的答案.
“问题”是Twig自变量变量.我使用Twig的原始过滤器来跳过自动转换,如下所示:
<script language="javascript"> user = $.parseJSON('{{ userJSON | raw }}'); </script>
现在打印:
user = $.parseJSON('{"configuration":{"levels":{"warning":0.05,"danger":0.1}}}');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。