php - 通过 jquery 生成的表单附加帖子
问题描述
我通过 jquery 创建字段,带有一个问题和 2 个答案,我需要通过 php 在帖子中收集这些字段。
我生成它们如下:
var length = wrapper.find(".fields").length;
$(wrapper).append('<div class="col-sm-12 fields fields'+ (length+1) +'">\
<label >Pergunta</label>\
<input type="text" value="" name="pergunta'+ (length+1) +'[]">\
<label >resposta 1</label>\
<input type="text" value="" name="resposta1'+ (length+1) +'[]">\
<label >resposta 2</label>\
<input type="text" value="" name="resposta2'+ (length+1) +'[]">\
<input type="text" value="" name="item[]">\
');
有问题的问题是,在 foreach 帖子中,我需要收集每个问题的答案。
$size = sizeof($_POST['item']);
for ($i = 0;$i < $size;$i++)
{
echo 'pergunta:' .$_POST["pergunta1"].'<br>';
}
通过这种方式我知道没有办法直接设置namedo输入,因为它是动态的。
解决方案
您必须按任意索引对它们进行分组,以便可以在后端通过索引获取它们的值(我稍微更改了格式):
var length = wrapper.find(".fields").length;
$(wrapper).append('<div class="col-sm-12 fields fields'+ (length+1) +'">'+
'<label >Pergunta</label>'+
'<input type="text" value="" name="pergunta['+ (length+1) +']">'+
'<label >resposta 1</label>'+
'<input type="text" value="" name="resposta1['+ (length+1) +']">'+
'<label >resposta 2</label>'+
'<input type="text" value="" name="resposta2['+ (length+1) +']">'+
'<input type="text" value="" name="item['+ (length+1) +']">'
);
假设length=5
,这将输出名称为“pergunta[6]”、“resposta1[6]”、“resposta2[6]”和“intem[6]”的表单输入。
然后你得到这样的值:
// now pergunta, resposta, items etc will by indexed arrays:
foreach($_POST['item'] as $key => $items)
{
echo 'pergunta:' .$_POST["pergunta"][$key].'<br>';
echo 'resposta1:' .$_POST["resposta1"][$key].'<br>';
echo 'resposta2:' .$_POST["resposta2"][$key].'<br>';
}
这不是最干净的方式,但我试图遵循你的架构。
查看此答案以获取有关为什么我使用 jQuery 输出多维数组的更多详细信息。
Obs.:我认为您只是将“项目”用作控件,因此它应该是隐藏的输入。
推荐阅读
- android - 构造函数中的变量在 Kotlin 中应该是私有的或公有的
- php - Laravel 测试响应是否包含错误?
- c# - 以编程方式安装 ISO 不起作用
- webhooks - 如何在不使用 ifttt 的情况下将 webhook 与谷歌助手集成?
- python - Django 使用欧几里得距离过滤对象
- python - 使用 GTK3 套接字在另一个窗口中嵌入窗口(Python)
- ios - 我想将模态 tableView 单元格数据返回到主视图
- model - 使用来自半连续目标的信息创建改进的二元分类器?
- c# - 如何从列是 C#.net 中字符串的一部分的数据表中进行选择
- spring - Spring JPA @OneToMany Repository.save() 方法返回的实体的实体为null