通过jQuery生成的表单附加帖子

时间:2018-08-17 21:54:20

标签: 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输入,因为它是动态的。

1 个答案:

答案 0 :(得分:0)

您必须按任意索引对它们进行分组,以便可以在后端按索引获取它们的值(我对格式进行了一些更改):

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>';
    }

这不是最干净的方法,但我尝试遵循您的体系结构。

请检查this answer,了解有关为什么我使用jQuery输出多维数组的更多详细信息。

不好意思:我认为您将“项目”用作控件,因此它应该是隐藏的输入。