2013-03-07 116 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