基于表单 ID 或名称的 FormData

sta*_*lay 2 javascript jquery

我有一个表单数据之外的按钮。当我提交表单时,我可以获得序列化值,但不能获得FormData. 我怎样才能得到FormData?

function submitForm() {
  console.log($('#form1').serialize());
  console.log(new FormData(document.getElementById('form1')));
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="form1" name="form1">
    <input type="firstname" value="First Name" name="firstname">
    <input type="lastname" value="Last Name" name="lastname">
</form>
<button onclick="submitForm()">Submit</button>
Run Code Online (Sandbox Code Playgroud)

Phi*_*hil 6

文档...

句法

var formData = new FormData(form)  
Run Code Online (Sandbox Code Playgroud)

参数

表单
一个 HTML<form>元素 — 指定后,FormData对象将使用表单的当前键/值填充,使用每个元素的名称属性作为键及其提交的值。它还将对文件输入内容进行编码。

您正在传递一个jQuery对象,而不是表单元素。相反,尝试

console.log(new FormData(document.getElementById('form1'))) // by id
Run Code Online (Sandbox Code Playgroud)

或者

console.log(new FormData(document.forms.form1)) // by name
Run Code Online (Sandbox Code Playgroud)

或者如果你仍然喜欢 jQuery

console.log(new FormData($('#form1')[0]))
Run Code Online (Sandbox Code Playgroud)