PHP 回显到 javascript = 语法错误:预期的表达式,得到“<”


PHP echo into javascript = Syntax Error: expected expression, got '<'

尽管有大量关于这个主题的帖子,但我没有运气让嵌入式php回显到JS变量中。 甚至精简为:

//PHP from app.php
$data = json_encode(5);
//and JS in results.html
var data = <?php echo $data; ?>;

控制台.log仅生成"语法错误:预期的表达式,得到'<'"。 周围有引号

似乎 PHP 没有解析。 正如Ed Cottrell在下面指出的那样,这里有一个仍然不受欢迎和没有答案的问题。我运行了由pemcconnell创建的测试.php这对我有用。 他说这表明"你的 JS 存在另一个问题",但我的 JS 在其他方面工作得很好。

所以。。。我把自己扔给狼。 我在做什么蠢事? 如果有人能帮忙,我会为他们做一个祭坛,上面有花环和香。

var data = "<?php echo $data; ?>";

您需要添加双引号以指示$data是 json 字符串。

正如Than Ngo Hoai在上面的答案中所建议的那样,代码必须在php文件中,而不是html中。否则它将无法正常工作。你应该接受他的回答,而不是你的。

您需要研究服务器端语言(PHP)和客户端语言(Javascript)之间的区别。

他们不会手拉手交流,但有解决方案。将 Javascript 变量保存为浏览器 cookie 并在 PHP 中访问它。然后,您可以回显出 cookie 值或将其分配给 PHP 变量。

PHP vs Javascript 信息https://softwareengineering.stackexchange.com/questions/171203/what-are-the-differences-between-server-side-and-client-side-programming

Javascript Cookiehttp://www.w3schools.com/js/js_cookies.asp

PHP饼干http://www.w3schools.com/php/php_cookies.asp

希望这对:)有所帮助

我仍然无法对 php echo 进行任何更改,但我切换到 Twig 的 {{ }} 并且可以工作。 我不得不在我的整个"JSON.parse()"语句周围加上引号(我很绝望)来弄清楚 Twig 正在解析,但通过自动转义双引号弄乱了 JSON。 一旦我用 {{ myData.json_encode()|raw }} 修复了它,它就完美了。

至于最初的问题,伊顿诺。 我的htaccess设置为将html文档识别为php。 我还尝试将结果更改为.html.php,以及我在这里和那里读到的一百万个其他东西。 它"应该"工作,但它没有。

谢谢大家的反馈。 这都是很好的建议,帮助我弄清楚了事情。