表单键+值对jquery插件

时间:2011-10-23 16:26:03

标签: javascript jquery html

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

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

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

$.post()

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

3 个答案:

答案 0 :(得分:5)

是的,jQuery有一个“serializeArray()”方法,可以满足您的要求。

它返回一个如下数组:

[ { name: "something", value: "whatever" }, { name: "another_one", value: 22 } ]

您可以将其转换为如下对象:

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

如果某个名称在表单中出现多次,则其“值”将是来自不同字段的值数组。

答案 1 :(得分:3)

$data = $("form").serialize(); // will return query string

$data = $("form").serializeArray(); // will return array 

Details here

答案 2 :(得分:0)

您可以使用$('#form').serializeArray()方法将数组传递给POST请求。

然后,您可以编辑正常收到的对象。