我在一个页面中有各种形式。 所有表单都由以下jQuery函数提交。 一切都很好,但有一个具有重复输入名称的特定表单。 事实上,在这种形式下,输入会根据请求进行克隆。 例如,此表单表示参加活动的人数。 用户可以根据需要添加任意数量的人,并通过填写表单添加每个人的详细信息。 输入即时克隆并插入表单内。 问题是jQuery以错误的方式发送它们,如下所示,并且我的php代码响应不好。事实上,它只是看到一个发布的“人”而不是所有人。
jquery帖子的例子:
protagonist_description zxcvvcbhcvbjfg
protagonist_description jfghjfghjh
protagonist_email
protagonist_email
protagonist_name zxcvzxcv
protagonist_name dfghdfgh
protagonist_phone
protagonist_phone
protagonist_role zxcvxzcv
protagonist_role hgfjgfhjhgh
protagonist_surname zcxvzxcv
protagonist_surname dfghd
protagonist_video
protagonist_video
protagonist_website
protagonist_website
PHP响应示例:
Array
(
[protagonist_name] => dfghdfgh
[protagonist_surname] => dfghd
[protagonist_role] => hgfjgfhjhgh
[protagonist_description] => jfghjfghjh
[protagonist_email] =>
[protagonist_phone] =>
[protagonist_website] =>
[protagonist_video] =>
)
正如你所看到的,它只是最后一次发布。
这是我的jQuery函数:
$(".save").click(function() {
$.ajax({
type: 'POST',
data: $('form[name="wizard_form"]').serialize(),
success: function() {
$('#publish').modal('show');
}
});
});
请注意,所有克隆的输入都在同一个表单中。 我只能用一张表格。所以请不要建议使用更多的克隆表单。它不适用于我的代码。
我正在寻找一种方法来正确合并在发布到PHP代码的特定数组中使用相同名称的输入。
怎么做?
答案 0 :(得分:2)
首先需要将表单输入更改为数组,方法是将[]
添加到名称中,如下所示:
<input name="protagonist_description[]" />
然后在你的PHP中它将如下所示:
Array
(
[protagonist_name] => Array
(
[0] => zxcvzxcv,
[1] => dfghdfgh,
)
[protagonist_surname] => Array
(
[0] => zcxvzxcv,
[1] => dfghd,
)
[protagonist_role] => Array
(
[0] => zxcvxzcv,
[1] => hgfjgfhjhgh,
)
[protagonist_description] => Array
(
[0] => zxcvvcbhcvbjfg,
[1] => jfghjfghjh,
)
[protagonist_email] => Array
(
[0] => ,
[1] => ,
)
[protagonist_phone] => Array
(
[0] => ,
[1] => ,
)
[protagonist_website] => Array
(
[0] => ,
[1] => ,
)
[protagonist_video] => Array
(
[0] => ,
[1] => ,
)
)
此时,您可以循环显示如下值:
for ($i = 0, $max = count($_POST['protagonist_name']); $i < $max; $i++) {
$first_protagonist = array(
'protagonist_name' => $_POST['protagonist_name'][$i],
'protagonist_surname' => $_POST['protagonist_surname'][$i],
// ...
);
}
Per David的建议,如果您愿意,这里是foreach
的代码:
foreach ($_POST['protagonist_name'] as $key => $val) {
$first_protagonist = array(
'protagonist_name' => $val,
'protagonist_surname' => $_POST['protagonist_surname'][$key],
'protagonist_description' => $_POST['protagonist_description'][$key],
// ...
);
}
答案 1 :(得分:0)
您需要在输入的名称中添加括号。
示例:
<input name="my_name[]" value="david" />
<input name="my_name[]" value="john" />
<input name="my_name[]" value="francis" />
$_POST['my_name']
将是一个包含所有结果的数组。
Array
(
[my_name] => Array
(
[0] => david
[1] => john
[2] => francis
)
)
答案 2 :(得分:0)
处理输入元素的数组,换句话说,定义为具有相同的元素名称。如果你最后用两个方括号定义名称,它将转换为服务器端的数组,用于php。
<input type='text' name='elmname[]' .....
<input type='text' name='elmname[]' .....
如果您提交包含这些元素的表单,然后在php端,您将看到$_POST['elmname']
将是一个数组