表单键+值对jquery插件

Jor*_*eno 3 html javascript jquery

有没有办法可以访问浏览器在表单提交时编译的数据数组 - 在js/jq中实际的GET/POST操作之前?

$("form").submit(function(event){
event.preventDefault();
//give me the data array here
});
Run Code Online (Sandbox Code Playgroud)

我发现自己越来越多地使用AJAX - 我调用event.preventDefault(),获取$(this)(表单)中包含的所有元素的名称/值对,然后通过它们将它们推送到服务器$.post().手动组装数据阵列变得很痛苦.如果插件存在各种各样的话会很棒:

$data = $("form").gimmeData();
Run Code Online (Sandbox Code Playgroud)

是否存在支持所有主要HTML输入元素的类似内容?我接近这种方式错了吗?谢谢!

Poi*_*nty 5

是的,jQuery有一个"serializeArray()"方法,可以满足您的要求.

它返回一个数组,如:

[ { name: "something", value: "whatever" }, { name: "another_one", value: 22 } ]
Run Code Online (Sandbox Code Playgroud)

你可以把它变成像这样的对象:

var arr = $('#form_id').serializeArray(), obj = {};
for (var i = 0; i < arr.length; ++i)
  obj[arr[i].name] = arr[i].value;
Run Code Online (Sandbox Code Playgroud)

如果名称在表单中出现多次,则其"值"将是来自单独字段的值数组.