0

iframe 内にフォームがあり、フォームに特定のデータを事前入力したいと考えています。

これを達成するためにphpとjavascriptを使用しようとしています。

私のコードは次のようになります:

   <script type="text/javascript">
      $(window).load(function() {
          document.getElementById('20988888993483').document.getElementById('input_13').value = <?=htmlspecialchars($_POST['input_13'])?>;
      }
  </script>

iframe の ID は 20988888993483 で、入力の ID は input_13 です。以前のフォーム送信からの値をプリロードします。

ただし、このコードはつなぎ合わされており、何をすべきかよくわかりません。

JavaScript をロードしたときに表示されるエラーは次のとおりです。uncaught syntaxerror unexpected end of input

アップデート

人々の提案に加えて、PHP 文字列を引用符で囲みました。実際、値が 5 の場合、JavaScript は次のようになります -- >

  <script type="text/javascript">
      $(window).load(function() {
        document.getElementById('20988888993483').document.getElementById('input_13').value = "5";
      }
  </script>

それでもエラーが発生します。感想大歓迎です

4

1 に答える 1

1

のデータ$_POST['input_13']が文字列の場合 (つまり、数値または ではないnull)、引用符で囲む必要があります。

マジック クォート構成設定が有効になっている可能性を処理するには、次のようにします。

$strValue = $_POST['input_13'];
if(get_magic_quotes_gpc()) {
    $strValue = stripslashes($strValue);
}

次に、二重引用符のみをエスケープする必要があります。

$strValue = addcslashes($strValue, '"');

文字列を安全に JavaScript に挿入できるようになりました。プロパティではなく要素htmlspecialchars()のプロパティを設定しているため、を使用する必要がないことにも注意してください。valueinnerHTML

document.getElementById('20988888993483').document.getElementById('input_13').value = "<?= $strValue ?>";

編集

または、PHP >= 5.2.0 を実行している場合、最善の解決策は次を使用することjson_encode()です。

$strValue = $_POST['input_13'];
if(get_magic_quotes_gpc()) {
    $strValue = stripslashes($strValue);
}

document.getElementById('20988888993483').document.getElementById('input_13').value = <?= json_encode($strValue) ?>;
于 2012-12-07T12:15:56.003 に答える