JSON Like对象回发

时间:2013-06-24 02:12:37

标签: html json post

我有时会在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>

它会返回相同的吗?它是同一类型的东西?这样做有什么不对吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分: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