【发布时间】:2014-10-11 15:49:05
【问题描述】:
我有一个表单,用于提交有关多人的数据。每个人都有多个属性,我将它们分组如下:
<input type=hidden name="person1[firstname]" value='Sam'/>
<input type=hidden name="person1[lastname]" value='Higgins'/>
<input type=hidden name="person2[firstname]" value='Jiminy'/>
<input type=hidden name="person2[lastname]" value='Cricket'/>
...etc
当我执行以下操作时:
my %hash = params;
die Dumper \%hash;
我明白了:
VAR1 = {
'person1[firstname]' => 'Sam',
'person1[lastname]' => 'Higgins',
'person2[firstname]' => 'Jiminy',
'person2[lastname]' => 'Cricket',
};
当我期待这样的事情时:
VAR1 = {
'person1' => { firstname => 'Sam', lastname => 'Higgens' },
'person2' => { firstname => 'Jiminy', lastname => 'Cricket' },
};
有没有办法获得上述内容,还是我在 HTML 中做错了?
编辑
我也试过在最后用空括号:
<input type=hidden name="person1[firstname][]" value='Sam'/>
但这只是给了:
'person1[firstname][]' => 'Sam',
【问题讨论】:
-
您可以通过输入名称
person[1][firstname]和person[1][lastname]... 来让您的表单生活更轻松,因为Dancer 似乎不会从输入创建多维结构。嗯。 -
我尝试通过将
JSON转换为json 字符串来使用它,但这仍然给了我person1[firstname]的密钥 -
我希望不要走这条路,但似乎我将不得不通过正则表达式并在 perl 中创建我自己的数据结构,按照stackoverflow.com/questions/19521690/…
-
Here's a JSFiddle 使用formToObject.js 对表单数据进行编码。这可能会使您不必创建数据结构!
-
@ialarmedalien 我最终使用了github.com/marioizquierdo/jquery.serializeJSON,因为 formToObject 给了我只读元素的 TypeErrors。我真的很感激他们提出了其他类似的解决方案,非常无私,这很棒