处理动态生成表单中的数据

时间:2013-11-10 17:51:04

标签: php jquery dynamicform

我想过制作能够动态生成大量表单的东西,然后使用jquery来处理他们的提交。

所以我通过使用类似的东西使用php生成表单。

while(some condition) {
    echo "<form method=post action=specific_url.php name=some_form_name>";
    echo "<input type=text>";
    echo "<input type=submit>";
    echo "</form>";
}

以上只是一个骨架。主要问题是我应该如何命名/ id表单元素,以便我可以在提交过程中唯一标识每个表单并提交它们,并且使用可以在specific_url页面上提取数据而没有任何问题。

这个功能的直接比喻,我可以在脑海中想到的是Facebook帖子,每个帖子都有一个评论框。

更新

我想我对这个问题不太清楚。对于那个很抱歉。让我重新说一下。

到目前为止,我有这些动态生成的表单。现在假设用户在其中一个文本框中写入并单击“提交”按钮。

在这一点上,jquery应该控制它。将该特定表单数据发送到URL。检索结果并执行某些操作。

所以最后,我应该可以做这样的事情

$(some_selector).submit(function(e) {
    e.preventDefault();
    $.post('specific_url.php',$(some_selector).serialize(),function(data) {
        // some stuff
    });
});

此处“some_selector”是在提交特定表单时激活的选择器,然后发送该表单的数据。

2 个答案:

答案 0 :(得分:0)

您可以使用隐藏的表单元素并将其值设置为表单的id。

<input type="hidden" name="form_id" value="1">

这样,您可以像提交任何其他表单值一样访问form_id。我现在正在查看facebook源代码,我在评论框旁边看到一些隐藏的表单元素

答案 1 :(得分:0)

要求元素id属性是唯一的,而不是name属性。

也可以使用元素数组,例如:

<input name="comment[]" type=text>
<input name="comment[]" type=text>
<input name="comment[]" type=text>.

在你的PHP中。 $ _POST ['comment']的值将作为数组发送。

如果您想要唯一地标识PHP代码中的每个注释,您将被迫唯一地重命名它们。

<input name="comment1" type=text>
<input name="comment2" type=text>
<input name="comment3" type=text>

由于您使用PHP生成表单,因此可以很容易地跟踪应生成的名称。

如果你有多种形式,你可以自由统治。表格不需要名称。但是,要确定表单在页面中的位置,请放置一个隐藏字段。

while(some condition) {
    echo "<form method=post action=specific_url.php";
    echo "<input name='position_in_page' type='hidden' value='$somevalue'>";
    echo "<input name='comment' type='text'>";
    echo "<input type='submit'>";
    echo "</form>";
}