【问题标题】:POST an array from an HTML form without javascript [duplicate]从没有javascript的HTML表单中发布一个数组[重复]
【发布时间】:2012-02-22 19:50:27
【问题描述】:

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

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

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

表格的第二部分代表一棵

  • 水果
  • 身高

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

【问题讨论】:

  • 阵列是否保证顺序?我想要一个包含多个字段的 Tree 对象数组,所以这意味着我必须使用多个数组来表示一棵树,并且必须对数组进行排序,这样我才能弄清楚它们代表的是哪棵树。

标签: php html forms post


【解决方案1】:

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'
        )
    )
)

【讨论】:

  • 数组索引中允许使用哪些字符?我们可以使用,.:`@吗?示例:tree[tree 1][fr ui_t]tree[tree.1][fru:it]tree[tree@1][fru,it] _ 是否只是键命名中的安全分隔符?
  • tree[][fruit]tree[][height] 是否无法自动索引数组?
  • 如何在 js 中将此提交的数据作为数组/对象获取以在提交回调中使用...我尝试过 new formData($("form")[0]) 和 jQuery $("form").serializeArray() 都返回 name="tree[tree1][fruit]" 作为字符串... .help
  • 注意:它不适用于 jquery 函数以将表单数据收集为 .serialize().serializeArray()
  • 我在 laravel 中尝试过,但没有为我工作
【解决方案2】:

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

<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' )

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 2013-01-10
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2021-08-21
    • 2016-03-22
    • 2019-08-26
    相关资源
    最近更新 更多