从没有javascript的HTML表单发布数组

sty*_*fle 80 html forms post

我有一个有点复杂的表单,我希望通过本地POST一组元组来简化服务器端(PHP)处理.

表单的第一部分代表用户:

  • 名字
  • 电子邮件
  • 地址
  • 等等

表单的第二部分代表:

  • 水果
  • 高度
  • 等等

问题是我需要能够以相同的形式为单个用户 POST多个.我希望将信息作为单个用户发送给一组树,但这可能与表单太复杂.我唯一想到的是使用javascript创建一些带有User对象和Tree对象数组的JSON消息.但是,避免使用javascript来支持更多用户(有些人关闭脚本)会很不错.

Jos*_*eph 136

检查一下.

<input type="text" name="firstname">
<input type="text" name="lastname">
<input type="text" name="email">
<input type="text" name="address">

<input type="text" name="tree[tree1][fruit]">
<input type="text" name="tree[tree1][height]">

<input type="text" name="tree[tree2][fruit]">
<input type="text" name="tree[tree2][height]">

<input type="text" name="tree[tree3][fruit]">
<input type="text" name="tree[tree3][height]">
Run Code Online (Sandbox Code Playgroud)

它应该在$ _POST []数组中以这样结束(PHP格式,以便于可视化)

$_POST[] = array(
    'firstname'=>'value',
    'lastname'=>'value',
    'email'=>'value',
    'address'=>'value',
    'tree' => array(
        'tree1'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree2'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree3'=>array(
            'fruit'=>'value',
            'height'=>'value'
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

  • 数组索引中允许使用哪些字符?我们可以使用,.:`@?例如:`tree [tree 1] [fr ui_t]``tree [tree.1] [fru:it]``tree [tree @ 1] [fru,it]`在键命名中是_唯一的安全分隔符? (6认同)
  • 将`tree [] [fruit]`和`tree [] [height]`无效自动索引数组? (3认同)

小智 45

您还可以发布具有相同名称的多个输入,并通过向输入名称添加空方括号将它们保存到数组中,如下所示:

<input type="text" name="comment[]" value="comment1"/>
<input type="text" name="comment[]" value="comment2"/>
<input type="text" name="comment[]" value="comment3"/>
<input type="text" name="comment[]" value="comment4"/>
Run Code Online (Sandbox Code Playgroud)

如果你使用PHP:

print_r($_POST['comment']) 
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
Run Code Online (Sandbox Code Playgroud)

  • 我觉得这就是发布问题的实际答案。 (3认同)