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

时间:2012-01-31 02:35:48

标签: html forms post

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

表单的第一部分代表用户

  • 名字
  • 姓氏
  • 电子邮件
  • 地址

表单的第二部分代表 Tree

  • 水果
  • 高度

问题是我需要能够以相同的形式为单个用户发布多个 Trees 。我希望将信息作为单个用户发送,其中包含 Trees 数组,但这可能与表单相比过于复杂。我唯一想到的是使用javascript创建一些带有User对象和Tree对象数组的JSON消息。但是,避免使用javascript来支持更多用户(有些人关闭脚本)会很好。

2 个答案:

答案 0 :(得分:123)

check this one out.

<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]">

它应该在$ _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'
        )
    )
)

答案 1 :(得分:36)

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

<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"/>

如果你使用php:

print_r($_POST['comment']) 

你会得到这个:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )