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

Shi*_*mar 2 forms ajax jquery post

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

 <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();
Run Code Online (Sandbox Code Playgroud)

});

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

对于更多,我尝试了 MALSUP,其中我可以在 POST 数据中发送表单名称和提交按钮名称。那么在 Jquery AJAX 中执行此操作的替代方法是什么

Shi*_*mar 5

我得到了答案。即使在提交表单后重新加载页面时,表单名称也不会与表单数据一致。只有所有带有提交按钮名称的输入元素才会被发送到表单数据中。即使输入 type="button" 元素名称也不会进入表单数据。

但是,当我们使用 ('form').serialize() 方法或 ('form').serailizeArray() 方法时,使用 AJAX 表单提交,所有带有名称的表单元素值都被序列化,但提交按钮值不会序列化。但我找到了一个解决方案,用最少的代码行发送提交按钮 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);
    }
Run Code Online (Sandbox Code Playgroud)

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