我设计了一个包含动态内容的表单。
例如, 表单包含Paper_Name的文本字段和Paper_Link的文本字段。 用户最多可以添加10个纸质名称和纸质链接。
每个纸质名称和纸张链接的ID如下:
papername01,paperlink01,...,papername10,paperlink10。
这些ID是由JavaScript动态创建的。换句话说,如果用户没有单击“添加纸张”按钮并提交表单,则服务器将接收的唯一字段是paperlink01和papername01。
现在,问题是设计服务器PHP脚本以处理这些提交的表单内容的更好的做法。
使用Ajax表单插件?
使用常规表单提交并迭代所有变量并查看是否设置了任何变量?
使用JSON数据格式?
是的,问题与服务器和客户端有关。我想知道最佳做法并相应地更改我的客户。 请帮忙,谢谢
表单设计如下所示:
<div id="divDummy001">
<div id="paperTitle001Fld">
<label for="papertitle001">Title of Paper 001</label>
<div>
<input type="text" size="16" value="" id="papertitle001" name="papertitle001"/>
</div>
</div>
<div id="paperURL001Fld">
<label for="paperurl001">Paper Link 001</label>
<div>
<input type="text" size="96" value="" id="paperurl001" name="paperurl001"/>
</div>
</div>
</div>
当用户点击“添加”按钮时,将创建一个新的div,唯一的区别是ID将增加1。
答案 0 :(得分:5)
为什么不发布数组?
做一个vanilla表单提交,然后在服务器端,你可以像任何其他PHP数组一样遍历POST
ed数组。
您需要做的就是定义HTML元素“name
属性并附加[]
:
<input type="text" name="papername[]" value=""/>
你的PHP应该是这样的:
<?php
if(isset($_POST['papername'])) {
foreach($_POST['papername'] as $papername) {
//do something with $papername...
}
}
?>
答案 1 :(得分:4)
使用数组。创建名称为papername[1], papername[2]
的文本字段,然后它们将在PHP脚本中显示为数组。
答案 2 :(得分:3)
您可以使用[]
将JS命名为元素。有关如何正常完成的说明,请参阅http://www.spsu.edu/cs/faculty/bbrown/papers/php2.html:
<form method="post">
I speak the following languages:
<input type="checkbox" name="lang[ ]" value="en">English<br />
<input type="checkbox" name="lang[ ]" value="fr">Français<br />
<input type="checkbox" name="lang[ ]" value="es">Español<br />
</form>
在接收代码中:
<?php
$langs = $_POST['lang'];
// Note that $snacks will be an array.
foreach ($langs as $lang) {
echo "$lang<br />";
}
?>
您也可以使用<input type="text" name="papername[]">
多次命名文本输入。然后,您可以将名称作为数组处理。
请注意:ID必须是唯一的,名称不必。你应该得到像
这样的HTML<input type="text" id="papername01" name="papername[]">
<input type="text" id="papername02" name="papername[]">
[etc]