在js / jq中实际的GET / POST操作之前,有没有办法可以访问浏览器在表单提交上编译的数据数组?
$("form").submit(function(event){
event.preventDefault();
//give me the data array here
});
我发现自己越来越多地使用AJAX - 我调用event.preventDefault(),获取$(this)
(表单)中包含的所有元素的名称/值对,然后通过{将它们推送到服务器{1}}。手动组装数据阵列变得很痛苦。如果一个插件存在各种各样的话会很棒:
$.post()
是否存在支持所有主要HTML输入元素的类似内容?我接近这种方式错了吗?谢谢!
答案 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
答案 2 :(得分:0)
您可以使用$('#form').serializeArray()
方法将数组传递给POST请求。
然后,您可以编辑正常收到的对象。