我需要使用 javascript(+Mootools) 从 HTML 表单中提取数据,其嵌套对象格式与发布表单时 PHP 会看到的嵌套对象格式相同。
我只是不擅长谷歌搜索,还是真的没有本地或众所周知的方法来实现这一目标?我看到许多其他人在不同的论坛上问过同样的问题,但到目前为止,所有人都接受了 jQuery serializeArray 等解决方案。
我用 jsFiddle http://jsfiddle.net/7quxe/尝试了 serializeArray,结果令人失望。
我之前自己为此编写了一个脚本,它工作得很好,除了当表单有重叠的混合键类型字段时它有一些问题(<input name="foo[bar]" value="1"> and <input name="foo[]" value="2"
。我已经开始研究一个更好的版本,但是当我发现自己重新开始并且再次,我心想:有很多很棒的 js 库,旨在解决许多基本的日常问题。难道真的希望从格式正确的对象中提取数据并不常见吗?
这是我正在尝试的示例:
<form method="post" action="/">
<input name="test" value="test">
<input name="nested[a]" value="a">
<input name="nested[b]" value="b">
<input name="nested[c]" value="c">
<input name="arraytest[]" value="foo">
<input name="arraytest[]" value="foo">
<input name="arraytest[]" value="foo">
</form>
下面是 PHP 会如何看待这个:
$_POST = array(
'test' => 'test',
'nested' => array(
'a' => 'a',
'b' => 'b',
'c' => 'c',
),
'arraytest' => array(
0 => 'foo1',
1 => 'foo2',
2 => 'foo3'
)
)
这就是我想在 js 中得到的:
{
test : 'test',
nested : {
a : 'a',
b : 'b',
c : 'c'
},
arraytest : { // This could also be an array ['foo1','foo2','foo3']
0 : 'foo1',
1 : 'foo2',
2 : 'foo3'
}
}