我在ATOM的 PHP 页面中有以下代码:
<html>
<head>
<?php $testvar = "Test"; ?>
<script>
var test = <?php echo $testvar; ?>;
</script>
</head>
<body>
<p> This is a test. </p>
</body>
</html>
页面在PHP页面上按照计划完成,但在Atom中,</script>
行之后的所有内容都以红色突出显示,如同错误一样。这里发生了什么?
以下是我使用的实际代码的屏幕截图。以上是一个例子,但也有同样的问题。
我在Atom支持上打开了Issue claim,但我想在这里试一下,看看代码中是否包含任何内容。
谢谢!
答案 0 :(得分:2)
这是您的代码中的错误,而不是Atom中的错误。您的echo
语句会生成一个未封闭的字符串:
<script>
var test = Test;
</script>
这导致JavaScript错误(“Uncaught ReferenceError:Test not defined”),因为您告诉解释器使用名为Test
的变量,但不存在。
您需要生成一个正确封闭的字符串,您可以使用json_encode()
:
<script>
var test = <?php echo json_encode($testvar); ?>;
</script>
根据你的评论,你实际上是在尝试构建一个数组,而不仅仅是回显一个字符串。你有这个代码:
var main_categories_array = [<?php echo '"'.implode('","', $main_categories_array ).'"' ?>];
如果您的数组包含任何引号,例如简单的“测试”示例,则会出现错误。所以,你的代码应该是:
var main_categories_array = <?php echo json_encode($main_categories_array); ?>;
答案 1 :(得分:0)
这是昨天发布的1.13中修复的实际错误:1月10日。
来源:
答案 2 :(得分:-2)
这是Atom的错误。