【问题标题】:Not understanding why $_POST isn't set after click on input button不明白为什么单击输入按钮后未设置 $_POST
【发布时间】:2012-11-06 23:33:58
【问题描述】:

在没有提交按钮的表单上下文中,我不明白为什么没有设置 $_POST 变量。这是我的代码:

<?php
  $view="blablabla";
?>
<form class="" method='POST' accept-charset="UTF-8" action='index.php'>
<p>
  <textarea rows="4" cols="60" name='article' id='article' WRAP=SOFT>
    <?php
      echo $view;
    ?>
  </textarea>
</p>    
<p>
  <input type="button" name='do1' id='do1' value="do 1"/>
  <input type="button" name='do2' id='do2' value="do 2"/>
</p>
</form>

<?php
  var_dump("POST :",$_POST);
?>

单击这两个按钮之一后,var_dump 是否应该向 $_POST 显示一个值?

【问题讨论】:

    标签: php forms post


    【解决方案1】:

    不,输入类型必须是 submit (&lt;input type="submit"/&gt;) 才能提交表单。必须将 POST 请求发送到您的 PHP 脚本,以便在 $_POST 数组中填充任何值:)

    编辑:他们没有 被提交,但在上面的代码的情况下,按钮上没有外部触发器,你需要提交按钮 :)

    对于您的多个按钮问题:

    如果您使用 JavaScript/Ajax 在单击按钮时将 POST 请求发送到 PHP,则需要执行类似的操作:

    if (isset($_POST['x'])) {
        var_dump($_POST);
        exit;
    }
    

    这样脚本不会返回页面的 HTML(即您的表单)- 如果您要发布到另一个页面,这不是问题 :)

    下面是一些示例 jQuery 代码,用于在单击按钮时发送一些 POST 数据(不会给您确切的代码,您必须根据需要对其进行修改!)

    $('#my_button').click(function(){
        $.post('myfile.php', data, function(response) { //the var 'data' is the POST data you're sending
            // handle response here, the data being in the response variable 
        });
    });
    

    【讨论】:

    • “必须提交输入类型才能提交表单” 谁说 OP 没有将事件侦听器附加到其他地方的按钮?
    • 看,现在你只是在迂腐。他是对的,但是关于上面的代码(即没有您使用的没有向我们展示的其他代码),您将需要提交按钮 :)
    • 好的,这是有道理的,但我需要有几个按钮,我不希望我的用户必须点击两次。是否有解决方法,也许通过调用像document.getElementById("xyz").submit(); 这样的JS函数?
    • 不是真的,如果我需要按钮在提交表单之前做更多的事情,我会这样做。
    • 而 OP 刚刚证实了我的怀疑。
    猜你喜欢
    • 2021-10-28
    • 2015-01-21
    • 2021-09-29
    • 2016-07-15
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多