0

我有时在 chrome 请求标头中看到,如果我有 JSON 对象,您可以发回数组和对象之类的东西

[
    {
        "name":"SmartLemon",
        "age":17
    },
    {
        "name":"Unknown",
        "age":-1
    }
]

如果这个对象有名字foo,那么它会像这样被发回:

foo[0].name = "SmartLemon"
foo[0].age = 17
foo[1].name = "Unknown"
foo[1].age = -1

我不确定那是否完全一样,但它是相似的。

现在假设我在表单中有一个表格,其中使用 jquery 模板动态添加了很多行

如果我这样设置所有名称

<form method="post">
    <table>
        <tr>
            <td>
                <input type="text" value="Fabian" name="foo[0].name"/>
            </td>
            <td>
                <input type="number" value="17" name="foo[0].age"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" value="Unknown" name="foo[1].name"/>
            </td>
            <td>
                <input type="number" value="-1" name="foo[1].age"/>
            </td>
        </tr>
    </table>
</form>

它会返回相同的吗?它是同一类型的东西吗?这样做有什么问题吗?或者有没有更好的方法来做到这一点?

4

1 回答 1

0

您可以在表单中使用foo[0][name]而不是foo[0].name,就像下面一样

HTML:

<form method="post" action="">
    <table>
        <tr>
            <td>
                <input type="text" value="Fabian" name="foo[0][name]"/>
            </td>
            <td>
                <input type="number" value="17" name="foo[0][age]"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" value="Unknown" name="foo[1][name]"/>
            </td>
            <td>
                <input type="number" value="-1" name="foo[1][age]"/>
            </td>
        </tr>
    </table>
    <input type="submit" name="sub">
</form>

在服务器端,您可以检索如下所示的项目(foo将是数组中的一个多维$_POST数组)

$_POST['foo'][0]['name'] // Fabian
$_POST['foo'][0]['age'] // 17
$_POST['foo'][1]['name'] // Unknown
$_POST['foo'][1]['age'] // -1

例如,使用php你可以循环

if(isset($_POST['sub'])){
    foreach ($_POST['foo'] as $value) {
        foreach ($value as $key => $val) {
            echo $key . ' ' . $val . '<br />';
        }
    }
}

输出将是

name = Fabian
age = 17
name = Unknown
age = -1
于 2013-06-24T05:15:55.477 回答