使用jquery-form时,提交按钮名称不会发布在表单提交上

时间:2017-02-17 12:52:22

标签: php html forms jquery-forms-plugin

我有一个让我疯狂的奇怪问题! 我想使用jquery-form版本3.46.0通过ajax提交HTML表单,然后在服务器上获取POST数据,但我的提交按钮的名称不会显示在发布数据!也许这个lib有问题吗?

这是我的代码:

<form id="form" action="test.php" method="post">
  <input name="email" type="email" placeholder="Email" required>
  <!-- And yes! I didn't use an input with type submit because 
  I need my button to have some HTML content and applied css styles to them. -->
  <button id="submit" type="submit" name="myFormName">
    <span class="label">Submit</span>
  </button>
</form>
<div id="formResult" style="display: block; margin: 20px 0; padding: 10px; background-color: #fbe6e6;" role="alert"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="//oss.maxcdn.com/jquery.form/3.50/jquery.form.min.js"></script>
<script>
  jQuery(document).ready(function($) {

    $('#submit').on('click', function(e) {
      e.preventDefault();

      $('#form').ajaxSubmit({
        clearForm: true,
        target: '#formResult',
        success: function() {
          // do sth
        },
        error: function() {
          // do sth
        }
      });
    });
  });
</script>

这是test.php文件:

<?php
var_dump($_POST);

我需要按照预期在服务器上的POST数据中显示我的提交按钮的名称......但它没有!有人有任何想法吗?

3 个答案:

答案 0 :(得分:0)

如果您使用name作为按钮,那么在作为$ _POST时,该值将显示为发布数据。而不是使用名称尝试使用id或只是删除它,如果你没有任何使用

答案 1 :(得分:0)

我们可以通过以下方式解决此问题-

  1. 使用jquery form plugin,它将发布所有表单数据
  2. 如果您不使用上述插件或任何插件,只需将提交按钮名称附加到序列化表单中,如下所示:
    $('#myForm').submit(function(event){
      event.preventDefault();
      $.ajax({
        type: "POST",
        url: "process.php",
        data: $('#myForm').serialize()+"&btnSubmitName=true",
        success: function(response){
          $('#resultDiv').html(response);
        }
      });
    });

答案 2 :(得分:-1)

<div><a href="javascript:foo1()">
<div class="holder"><span class="label">Submit</span></div>
<div class="loader"><i class="fa fa-circle-o-notch fa-spin"></i></div></a></div>

并实施foo1以提交表格。