serializeArray()给出空数组
我正在尝试使用.seralizeArray()
来获取表单输入值。
输入字段包含具有各自相应价格的项目列表; 我想保存每个值对应其对应的密钥对,但不断收到错误: ... empty array with 0 length
。
我尝试了一些选择器的组合,但仍然得到[]
。
如何成功序列化?
以下是我的代码:
HTML
JS
$('#itemInformation .nextButton').bind('click', function (event) { event.preventDefault() console.log($('.itemGroup').serializeArray()) })
当心!
您需要为所有 字段添加
name
属性,如下所示:
此外,使用
而不是
除非您确实有明确的理由这样做。
serializeArray();
的语法serializeArray();
如下: $(selector).serializeArray();
。
参考: w3schools (阅读定义和用法) 。
这里使用相同的概念,旨在序列化相似项目的集合 。
请注意 :使用
元素不是强制性的,但只是建议您根据您在post中分享的预期目的和信息轻松有效地序列化; 我可能误读了你,但最重要的是错过了name
属性,它解释了你的空数组[]
因为没有什么可以序列化。
请记住,根据您的项目要求,您可能必须在需要时使用
。
您可以使用具有不同ID的
元素将要标识的相关项目分组为一个单元。 因此,您可能会遇到以下情况:
然后你可以使用$('#itemDetails').serializeArray();
序列化整个表单或$('#FIELDSET_ID').serializeArray();
其中FIELDSET_ID是您要根据事件从表单序列化所选字段集的相应ID ,以实现您的预期目的。
添加了下面的代码段,说明如何有效地将项目与其对应的值配对;
$('#itemInformation .nextButton').bind('click', function (event) { event.preventDefault(); console.table($('#itemInformation').serializeArray()); console.log($('#itemInformation').serializeArray()); });
.serializeArray()
方法使用标准W3C规则来成功控制,以确定它应包含哪些元素; 特别是该元素不能被禁用,并且必须包含name属性。
IMO,使用form
并将name
属性应用于所有输入。
var formdata = $( "#itemInformation" ).serializeArray();
仅供参考,使用form
是一种很好的做法,但使用它并不是强制性的。
官方文档serializeArray()
$('#itemInformation .nextButton').bind('click', function (event) { event.preventDefault() console.log($('#itemInformation').serializeArray()) })