【问题标题】:PHP: Echoing an input submitted from a formPHP:回显从表单提交的输入
【发布时间】:2015-08-22 18:09:55
【问题描述】:

我有一个包含一个文本字段的表单。现在,我试图在提交表单后回显该输入的内容。这是我的代码:

<script>    
    function postResultss()
    {
        document.write("<?php echo ($_POST['tweet1']); ?>");
    }
</script>

<form method = "POST">
    <input type = "text" name = "tweet1">
    <br>
    <input type = "submit" onclick = "postResultss()" />
</form>

以上代码位于 PHP 文件中。但是,在提交表单时没有任何回应。该函数确实按预期调用,因为我尝试在调试时回显自定义消息。但是,当我尝试回显 $_POST['tweet1'] 的值时,没有任何内容被回显,其中 tweet1 是我要显示其内容的输入文本字段的名称。

这里似乎有什么问题?

【问题讨论】:

  • JS 中的 PHP。嗯嗯,没有。
  • @HawasKaPujaari 为什么不呢?
  • 首先,因为按钮是提交按钮,所以附加的javascript函数postResultss()不太可能被调用——除非它在js函数中有event.preventDefault()。其次,在单击按钮时,js 函数将无法使用 POST var - 只有在提交表单和事件之后,这是显示发布值的错误方法。
  • @RamRaider 好吧,当我尝试在我的 JS 函数中回显 echo ("felicity"); 之类的内容时,确实会显示该消息。这意味着提交表单时确实调用了 JS 函数。
  • OK,所以调用了 js 函数,但是点击按钮时 POST 变量不可用

标签: javascript php html forms


【解决方案1】:

您提交并点击。那就错了。此外,不要做一个document.write!

这样做是更好的选择(js 中没有 php):

<?php
   if ($_SERVER['REQUEST_METHOD'] == 'POST') // check if post
      echo htmlentities($_POST['tweet1']);
?>

<form method="post">
    <input type="text" name="tweet1">
    <br>
    <input type="submit" value="Tweet!">
</form>

【讨论】:

    【解决方案2】:

    与其使用 javascript 编写在您的示例中不起作用的内容,不如使用 php 生成响应以供用户查看

    <form method = "POST">
        <input type = "text" name = "tweet1">
        <br>
        <input type = "submit" value='Submit' />
        <div id='msgs'>
        <?php
            if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['tweet1'] ) ){
               echo $_POST['tweet1'];
            }
        ?>
        </div>
    </form>
    

    【讨论】:

      【解决方案3】:

      问题是在表单提交之前调用了 javascript 函数(所以在 php 可以打印出 echo 之前),并且由于页面更新,document.write 被新请求覆盖。

      你为什么不试试这样的东西?

      <form method = "POST">
          <?php echo ($_POST['tweet1']); ?>
          <input type = "text" name = "tweet1">
          <br>
          <input type = "submit"/>
      </form>
      

      或:

      <script>
      var text = "<?php echo ($_POST['tweet1']); ?>";
      if(text != ""){
         alert(text);
      }
      </script>
      <form method = "POST">
      
          <input type = "text" name = "tweet1">
          <br>
          <input type = "submit"/>
      </form>
      

      【讨论】:

      • 或文件写入而不是警报
      • 这可行,但我需要在提交表单时调用一个函数,所以这个解决方案可能对我没有帮助。
      • 等等,您希望在提交表单之后还是之前显示文本?
      • 提交表单后。这就是为什么我试图在我的提交字段中触发onclick 事件。
      猜你喜欢
      • 1970-01-01
      • 2011-10-12
      • 2019-11-04
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2013-10-07
      • 2015-08-17
      相关资源
      最近更新 更多