使用jQuery检索表单中的提交按钮的名称

时间:2016-07-12 13:29:41

标签: javascript php jquery html

我正在使用PHP和jQuery。我有2个文件

test.php

<script>
    $(document).ready(function(){
        $(".form-register").submit(function (e) {

            var form_data = $(this).serialize();

            e.preventDefault();

            $.ajax({
                type: "POST",
                url: "test2.php",
                data: form_data,
                dataType: 'json',
                success: function(){
                    alert(form_data);
                }

            });
        });


    });
</script>

<form class="form-register">
    <input name="email" type="text"/>
    <input name="name" type="text"/>
    <input type="submit" name="register"/>
</form>

,第二个文件是test2.php

<?php
if(isset($_POST['register'])){
    echo json_encode('Message from test2.php');
}else{
    echo json_encode('post no received');
}

似乎我无法检索$_POST['register'],因为当我检查alert(form_data);时,只会显示emailname

我有没有得到$_POST['register']

2 个答案:

答案 0 :(得分:1)

添加值属性以提交按钮并使用$('form').serializeArray()。尝试:

$(".form-register").submit(function (e) {
  var formData = $(this).serializeArray();
  var name = $(this).find("input[type=submit]").attr("name");
  var value = $(this).find("input[type=submit]").val();
  formData.push({ name: name, value: value });
  //now use formData, it includes the submit button
  $.ajax({
     type: "POST",
     url: "test2.php",
     data: formData,
     dataType: 'json',
     success: function(){
         alert(form_data);
     }
  }); 
});

答案 1 :(得分:0)

.serialize().serializeArray()都不会序列化提交按钮值。

  

.serialize()

     

...没有提交按钮值被序列化,因为表单未使用按钮提交。

     

.serializeArray()

     

...没有提交按钮值被序列化,因为表单未使用按钮提交。

仅序列化successful controls

输入提交元素实际上是一个成功的控件,但如上所述,由于表单未使用提交按钮提交,因此jquery序列化不会包含输入提交值属性。

如果要使用.serializeArray(),只需将输入提交元素名称和值属性值作为对象添加到序列化数组中,就像这样。

&#13;
&#13;
$(document).ready(function(){
  $(".form-register").submit(function (e) {

    var form_data = $(this).serializeArray();
    var $submit = $(this).find('input[type="submit"]');
    form_data.push({name: $submit.prop("name"), value: $submit.val()});
    console.log(form_data);
    
    // do your ajax request here...
    
  });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-register">
  <input name="email" type="text"/>
  <input name="name" type="text"/>
  <input type="submit" name="submit" value="register"/>
</form>
&#13;
&#13;
&#13;

如果要使用.serialize(),只需将submit元素的value和name属性值添加到.serialize()方法创建的文本字符串中。请注意,字符串需要进行URL编码。

&#13;
&#13;
$(document).ready(function(){
  $(".form-register").submit(function (e) {

    var form_data = $(this).serialize();
    var $submit = $(this).find('input[type="submit"]');
    form_data = form_data + "&" + $submit.prop("name") + "=" + $submit.val();
    console.log(form_data);

    // do your ajax request here...

  });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-register">
  <input name="email" type="text"/>
  <input name="name" type="text"/>
  <input type="submit" name="submit" value="register"/>
</form>
&#13;
&#13;
&#13;