【问题标题】:How do detect which submit button was sent through POST in PHP如何在 PHP 中检测通过 POST 发送的提交按钮
【发布时间】:2012-06-07 13:31:58
【问题描述】:

问题:

在通过 PHP 发送表单后,用 jQuery 检测哪个提交按钮被按下。

场景:

我有三个按钮:

  1. 提交更新1
  2. 提交更新2
  3. 提交更新3

如果 $_POST['submit-update1'] 在 PHP 中设置,那么 jQuery 应该将一个类添加到 id 为“collapseOne”的 div。例如:

if (PHP POST submit button 1 is submitted)
{
    $('#collapseOne').addClass('in');
}

if (PHP POST submit button 2 is submitted)
{
    $('#collapseTwo').addClass('in');
}

if (PHP POST submit button 3 is submitted)
{
    $('#collapseThree').addClass('in');
}

DIV 元素:

<div class="accordion" id="accordion2">
    <div class="accordion-group">
      <div class="accordion-heading">
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
          Title 1
        </a>
      </div>
      <div id="collapseOne" class="accordion-body collapse">
        <div class="accordion-inner">
            Text here
        </div>
      </div>
    </div>
    <div class="accordion-group">
      <div class="accordion-heading">
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
          Title 2
        </a>
      </div>
      <div id="collapseTwo" class="accordion-body collapse">
        <div class="accordion-inner">
          Text here
        </div>
      </div>
    </div>
    <div class="accordion-group">
      <div class="accordion-heading">
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
          Title 3
        </a>
      </div>
      <div id="collapseThree" class="accordion-body collapse">
        <div class="accordion-inner">
          Text here
        </div>
      </div>
    </div>
</div>

提交按钮:

<button type="submit" id="submit-update1" name="submit-update1">Update 1</button>
<button type="submit" id="submit-update2" name="submit-update2">Update 2</button>
<button type="submit" id="submit-update3" name="submit-update3">Update 3</button>

欢迎任何建议,提前致谢!

【问题讨论】:

  • 你是用ajax发布表单数据吗?
  • @thecodeparadox HTML 代码现已可用。
  • @AdamMerrifield 表单数据使用 PHP POST 提交。

标签: php jquery forms post submit


【解决方案1】:

将此添加到您的 html 中:

<input type="hidden" name="submit" value="" />

然后这是 jQuery:

$('button[type="submit"]').on('click', function(e){
    $('form input[name="submit"]').val($(this).attr('name'));
    $('form').serialize();
});

【讨论】:

    【解决方案2】:
      <form method="post" id="many_buttons">
        <input type="hidden" id="submit_button" name="button_pressed" />
    
        <button type="submit" id="submit-update1" name="submit-update1">Update 1</button>
        <button type="submit" id="submit-update2" name="submit-update2">Update 2</button>
        <button type="submit" id="submit-update3" name="submit-update3">Update 3</button>
      </form>
    
      <script>
      $('#many_buttons button[type=submit]').click(function(){
        $('#submit_button').val($(this).attr('name'))
      })
      </script>
    

    然后在服务器端:

      <?php
      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $button = $_POST['button_pressed'];
    
        if ($button == 'submit-update1')
          $div = 'collapseOne';
        elseif ($button == 'submit-update2')
          $div = 'collapseTwo';
        elseif ($button == 'submit-update3')
          $div = 'collapseThree';
      }
      ?>
    

    最后你打印了这个javascript:

      <?php if (!empty($div)) : ?>
      <script>$('#<?php echo $div ?>').addClass('in')</script>
      <?php endif ?>
    

    【讨论】:

    • 工作就像一个魅力,感谢您的指导和您的时间!
    【解决方案3】:

    我假设您已经弄清楚了提交提交按钮的问题,但是在基于这些变量操作页面时遇到了麻烦。您可以使用动态脚本根据 post 变量设置一些变量,如下所示:

    echo "<script type='text/javascript'>";
    if (isset($_POST['submit-update1']) && $_POST['submit-update1'] == true) {
        echo "var submitUpdate1 = true;";
    }
    else {
        echo "var submitUpdate1 = false;";
    }
    ///...do similar things for the rest of your post variables
    echo "</script>";
    

    然后在您的 javascript 中,您只需在文档准备好后访问上面定义的那些变量。

    【讨论】:

    • 换句话说,jQuery 中没有内置函数来检测发送了什么按钮然后对其进行操作?
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 2021-11-21
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多