【发布时间】:2011-03-17 16:47:28
【问题描述】:
当表单包含多个输入数组字段时,是否有更好的解决方案来转换已经由 jQuery 函数 serialize() 序列化的表单数据。我希望能够将表单数据转换为 JSON 对象以重新创建其他一些信息表。所以告诉我一个更好的方法将序列化字符串转换为 JSON 对象。
<form id='sampleform'>
<input name='MyName' type='text' /> // Raf
<!--array input fields below-->
<input name='friendname[]' type='text' /> // Bily
<input name='fiendemail[]' type='text' /> // bily@someemail.com
<!--duplicated fields below to add more friends -->
<input name='friendname[]' type='text' /> // Andy
<input name='fiendemail[]' type='text' /> // Andy@somwhere.com
<input name='friendname[]' type='text' /> // Adam
<input name='fiendemail[]' type='text' /> // Adam@herenthere.com
</form>
获取数据的jquery方法
var MyForm = $("#sampleform").serialize();
/** result : MyName=Raf&friendname[]=Billy&fiendemail[]=bily@someemail.com&friendname[]=Andy&fiendemail[]=Andy@somwhere.com&friendname[]=Adam&fiendemail[]=Adam@herenthere.com
*/
如何将这些数据放入 JSON 对象? 它应该具有来自上述表单的以下示例 JSON 数据。
{
"MyName":"raf",
"friendname":[
{"0":"Bily"},
{"1":"Andy"},
{"2":"Adam"}
],
"friendemail":[
{"0":"bily@someemail.com"},
{"1":"Andy@somwhere.com"},
{"2":"Adam@herenthere.com"}
]
}
【问题讨论】:
-
从技术上讲,这不是基于您的查询字符串格式化 JSON 对象的方式。具体来说,数组元素不会是具有索引的对象,而只是值。话虽如此,如果您需要发布的格式,您可能需要编写自定义函数。
-
你可以使用this plugin。
-
感谢 Slaks 和 Jason,是的,我确实同意我需要一个函数来执行此操作,并且 Slaks 已经为我指出了这一点。
-
2018 人,在回答这个问题几年后,我从这里尝试了多种解决方案,并推荐 tothemario 解决方案:github.com/marioizquierdo/jquery.serializeJSON 即使您使用“对象 [属性]”形式命名你的输入。
标签: javascript jquery json serialization