【发布时间】:2014-10-11 21:45:28
【问题描述】:
我有一个表单,它允许用户添加相同输入字段的多个“行”,基本上,要求用户指定他们拥有的孩子的数量。
表格很简单,如下(为阅读目的而缩写):
<form name="guestform" method="post">
....
<div class="children-part">
<ul>
<li> <li>
<li>
<label>Name:</label>
<input type="text" name="childfirstname" />
<li>
<li>
<label> </label>
<input type="text" name="childlastname" />
<li>
<li>
<label>Gender:</label>
<input type="radio" name="childgender" value="M" /> <label>Male</label>
<input type="radio" name="childgender" value="F" /> <label>Female</label>
<li>
</ul>
</div>
....
</form>
我在页面上有一个[+] 按钮,该按钮通过 JavaScript 为第 n 个条目(通常最多 3 个)克隆 div.children-part 块。
我获取表单并序列化数据,以便我可以通过 AJAX 调用将其传递给要插入数据库的 Web 服务。现在,对于单个孩子来说,很容易获取查询字符串值,但对于多个孩子来说,它变得更加复杂......
复杂查询字符串示例:
&childfirstname=1&childlastname=1&childfirstname=2&childlastname=2&childfirstname=3&childlastname=3&childfirstname=4&childlastname=4
我的问题是,有没有办法在不编写复杂循环语句的情况下将这些值放入数组中?
我目前在 $ 字符上将它们拆分为一个数组,然后确定该数组包含多少单个字符串文字,然后分别迭代每个字符串以构建我需要的数据的多维数组(不止一个孩子),但是对于这么简单的事情,这感觉有点矫枉过正?
【问题讨论】:
-
您是否尝试将
[]添加到name?然后您应该可以通过$_GET访问它们。但请注意,键可能会混淆,因此在创建查询时添加它们可能是有意义的 -
我不确定这是否是您要查找的内容,但您可以使用以下数组命名表单字段:
<input name="childfirstname[]">。每个字段将作为一个数组发布:foreach ($_POST['childfirstname'] as $key => $value) { ... }. -
当然:$...我会尽快尝试。感谢您对混合部分的提醒,会留意的。谢谢
-
在查询字符串
childlastname=1&childlastname=2中,单个结果变量$_POST['childlastname']的值将是2,因为查询字符串中的第一次出现被覆盖。
标签: javascript php arrays query-string