1

Firebugでこのエラーが発生します:

SyntaxError:終了していない文字列リテラル

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に取り込む他の方法があれば、知りたいです!どんな種類の助けも私には役に立ちます。

よろしくお願いいたします。

ハーメンブリンクマン

4

1 に答える 1

6

JavaScriptで文字列リテラル(および他のほとんどすべてのタイプの値も)を挿入するためのはるかに優れた方法は次のjson_encodeとおりです。

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

PHPタグを囲む二重引用符を削除し、json_encodeそれ自体を提供していることに注意してください。

このソリューションの唯一の潜在的な問題は、注入する文字列がUTF-8である必要があることですが、既存のコードにaddslashesも同様の問題があり(1バイトエンコーディングを使用していると盲目的に想定している)、IMHOにはリグレッションはありません。

最後に、PHP変数にアクセスする前に、PHP変数が実際に設定されていることを確認してください。そのような変数がない場合、PHPはJavaScriptコードが期待される場所に警告を発します。これは、1日を台無しにする確実な方法です。

于 2013-03-07T10:04:53.647 に答える