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,input的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(),因为您正在设置value元素的属性,而不是innerHTML属性。

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 回答