如何在ajax表单提交中提交表单名称和提交按钮名称

时间:2014-09-07 14:55:14

标签: jquery ajax forms post

我正在寻找一些简洁的解决方案,我可以使用表单输入字段发送表单名称和提交按钮名称。我尝试了form.serializeArray()方法,但我只在post中获取输入字段名称。那么如何使用表单名称发送完整的表单数据并在一行代码中提交按钮名称

 <form id="formid" name="formName" class="formClass" action="service.php" method="POST" >
        <input type="text" id="fname" name="fname"/>
        <input type="text" id="lname" name="lname" />
        <input type="Submit" id="SUBMIT" value="SUBMIT" name="submit"/>

    </form>

    $( "#formid" ).submit(function( event ) {
    //var array = $(this).serializeArray() ;  //  Didn't send Form name and submit button
    // var data2 = new FormData($( "#formid" )[0]); // I have also tried this



      $.ajax({
        type: $(this).attr('method'),
        url : $(this).attr('action') , 
        cache: false,
        contentType: false,
        processData: false,
        data:  formData,
        complete:function(httpResponse, status) {
        var response = httpResponse.responseText;       
        alert(response);

        }
      });


    event.preventDefault();

});

我想在ajax中发送表单名称和提交按钮名称,就像在提交表单后重新加载页面一样。

有关更多内容,我尝试了MALSUP,我可以在POST数据中发送表单名称和提交按钮名称。那么在Jquery AJAX

中做什么的替代方法呢?

1 个答案:

答案 0 :(得分:3)

我得到了答案。即使在提交表单后重新加载页面,表单名称也不会与表单数据一起使用。只有具有提交按钮名称的所有输入元素才会被发送到表单数据中。甚至输入类型=&#34;按钮&#34;元素名称不会进入表单数据。

但是当我们使用(&#39;形式&#39;)时,使用AJAX表单提交.serialize()方法OR(&#39;形式&#39;)。serailizeArray()方法所有表单元素值及其名称是序列化但SUBMIT按钮值不与此SERIALIZE。但我找到了一个解决方案,用最少的代码行发送提交按钮NAME和VALUE。

var formdata = new FormData();
     for (var i = 0; i < $(this)[0].length; i++) {
        formdata.append($(this)[0][i].name, $(this)[0][i].value);
    }

上面的代码将生成所有元素的数组,包括提交按钮NAME和VALUE。这样做的好处是我们可以在SERVER SIDE检查提交按钮名称,并且只能根据一个条件执行有价值的操作。

相关问题