2013-03-07 46 views
1

我得到这个错误在Firebug使用PHP:未结束的字符串,在Javascript

语法错误:未结束的字符串

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布林克曼

回答

6

一个更好的在JavaScript注入字符串(和几乎所有其他的类型的值太)的方式是json_encode

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

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

此解决方案的唯一潜在问题是您要注入的字符串必须是UTF-8,但您现有的代码与addslashes也有类似的问题(它盲目地认为您使用的是单字节编码)所以恕我直言,没有回归。

最后,确保PHP变量在尝试访问它们之前实际设置为!如果没有这样的变量,PHP会发出警告,预期JavaScript代码:这是毁掉你的一天的肯定方式。

+0

感谢您的帮助,但是当我不添加双引号时,Fire bug给出了缺少引号的语法错误,当我添加它们时,它会给出如下的语法错误:Panel_brand_type [i] =“”value“ “;有什么建议么? – notknown7777 2013-03-07 10:10:28

+0

@HarmenBrinkman:如果变量存在于PHP中,则没有其他可能导致JS错误的其他东西(即使该字符串不是UTF-8,这将导致“null”值而不是错误)。所以唯一合乎逻辑的解释是你注入了不存在的变量值。 – Jon 2013-03-07 10:12:29

+0

由于某种原因,它现在可以工作,没有额外的保存或其他更改,我会将这一个标记为答案!非常感谢你! – notknown7777 2013-03-07 10:12:32

相关问题