无终止字符串字面量,在Javascript中使用PHP


Unterminated string Literal, Using PHP in Javascript

我在Firebug中得到这个错误:

SyntaxError: unterminated string literal

Panel_Measurements[i] = " <br />

现在我所有的功能都不能工作了…我尝试了多种解决方案,但都不起作用……这是我的代码:

<script type="text/javascript" language="javascript>
   <?php
      $i = 0;
      while(isset($dbPanel_Name[$i]))
      {
   ?>
          Panel_brand_type[i]   = "<?php echo addslashes($dbPanel_Brand_Type[$i]); ?>";
          Panel_description[i]  = "<?php echo addslashes($dbPanel_Description[$i]); ?>";
          Panel_measurements[i] = "<?php echo addslashes($dbPanel_Measurements[$i]); ?>";
          Panel_warranty[i] = "<?php echo addslashes($dbPanel_Warranty[$i]); ?>";
          i++;
   <?php
         $i++;
       }
    ?>
</script>

如果有任何其他的方法来获得PHP变量到Javascript,我很想知道!任何形式的帮助对我都是有用的。

真,

Harmen Brinkman

在JavaScript中注入字符串字面值(以及几乎所有其他类型的值)的更好方法是json_encode:

Panel_brand_type[i] = <?php echo json_encode($dbPanel_Brand_Type[$i]); ?>;

请注意,我删除了PHP标签周围的双引号,json_encode自己提供了它们。

这个解决方案的唯一潜在问题是,你注入的字符串必须是UTF-8,但是你现有的addslashes代码也有类似的问题(它盲目地假设你正在使用单字节编码),所以IMHO没有回归。

最后,在尝试访问PHP变量之前,请确保它们实际上已经设置了 !如果没有这样的变量,PHP将在需要JavaScript代码的地方发出警告:这肯定会毁了你的一天。