首页 > 解决方案 > 通过 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输入,因为它是动态的。

标签: phpjquery

解决方案


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

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.:我认为您只是将“项目”用作控件,因此它应该是隐藏的输入。


推荐阅读