Atom Editor:当PHP在Javascript中时出错

时间:2017-01-02 20:38:43

标签: javascript php atom-editor

我在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,但我想在这里试一下,看看代码中是否包含任何内容。

谢谢!

Image enter image description here

3 个答案:

答案 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的错误。

发表在此处:https://github.com/atom/atom/issues/13532