如果我有以下表格:
相反,我想要这个:
据我了解,jQuery曾经可以实现此功能,但他们将serialize方法更改为返回GET风格的查询字符串。是否有一种简单的方法来获得我想要的结果?
<form>
<input name="foo" value="bar">
<input name="hello" value="world">
<input name="animals[]" value="panda">
<input name="animals[]" value="koala">
<input name="car[make]" value="Honda">
<input name="car[origin]" value="Japan">
</form>
我不想使用 $("form").serialize()
:
我不希望使用这个方法来序列化表单数据。
foo=bar&hello=world&animals%5B%5D=panda&animals%5B%5D=koalacar&%5Bmake%5D=Honda&car%5Borigin%5D=Japan
相反,我想要这个:
{"foo":"bar", "hello":"world", "animals":["panda", "koala"], "car":{"make":"Honda", "origin":"Japan"}}
据我了解,jQuery曾经可以实现此功能,但他们将serialize方法更改为返回GET风格的查询字符串。是否有一种简单的方法来获得我想要的结果?
编辑
我更新了原始问题,包括car[make]
和car[origin]
示例。应该假定表单中也可能出现foo[bar][baz]
或foo[bar][baz][bof]
输入。
此外,指定数字索引键的条目,如foo[0]=a
,foo[1]=b
,foo[4]=c
应该被保留,例如:
{ ... "foo":["a", "b", undefined, undefined, "c"] ... }
.serializeArray()
就是你要找的东西(http://api.jquery.com/serializeArray/)。 - Quasdunk.serializeArray()
方法返回的结果与我的问题中指定的不同。 - maček