如何获取数组发布值

Posted

技术标签:

【中文标题】如何获取数组发布值【英文标题】:how to get an array post values 【发布时间】:2021-02-15 13:00:50 【问题描述】:

在我的脚本中,我有动态添加的输入字段。我必须使用 php 获取所有输入值,但 $_POST['poids'] 中的问题只给了我输入数组的第一个值,所以只是数组 poids 的第一个元素。这是我的代码:

$(function() 

  var max_fields = 10;
  var $wrapper = $(".container1");
  var add_button = $(".add_form_field");
  $(add_button).click(function(e) 

    e.preventDefault();
    const vals = $("> .item input[name^=poids]", $wrapper).map(function() 
      return +this.value
    ).get()
    const val = vals.length === 0 ? 0 : vals.reduce((a, b) => a + b);

    if ($("> .item", $wrapper).length < max_fields && val < 100) 
      const $form_colis = $(".item").first().clone();
      $form_colis.find("input").val("");
      $wrapper.append($form_colis); //add input box
     else 
      var err_msg = 'limit riched';
      //alert(err_msg);
      window.alert(err_msg);
    
  );

  $wrapper.on("click", ".delete", function(e) 
    e.preventDefault();
    $(this).parent('div').remove();
  )
);
<div class="container1" style="min-height:200px">
  <button class="add_form_field">Add New Field ✚</button>

  <form method="post" action="postForm.php">
    <div class="item">
      <input type="text" placeholder="Poids" name="poids[]">
      <input type="text" placeholder="Longueur" name="longueurs[]">
      <input type="text" placeholder="Largeur" name="largeurs[]">
      <input type="text" placeholder="Hauteur" name="hauteurs[]">
      <a href="#" class="delete">Delete</a>
    </div>

    <button type="submit" name="" class="btn btn-danger btn-responsive "> Send </button></center>
    </a>
  </form>
</div>

获取帖子(postForm.php):

$poids = $_POST['poids'];
foreach($poids as $poid) 
  
  echo " -->" .$poid;

我希望你明白我的意思。

提前谢谢你

【问题讨论】:

这能回答你的问题吗? html/PHP - Form - Input as array 【参考方案1】:

问题是您将带有新输入字段的 div 附加到 $wrapper,但这超出了表单。您需要将其放入表单中。

改变

      $wrapper.append($form_colis); //add input box

      $('.item', $wrapper).last().after($form_colis); //add input box

【讨论】:

【参考方案2】:

我不是 PHP 专家,但仅通过浏览提供的代码,您似乎只是在搜索名称值为 poids 的输入。

const vals = $("> .item input[name^=poids]",$wrapper).map(function()  return +this.value ).get()

然后,当您创建 bew 输入时,您不会将 poid 附加到输入名称。

const $form_colis = $(".item").first().clone();
                  $form_colis.find("input").val("");
                  $wrapper.append($form_colis);

因此,你只会找到一个用你的方法,那就是这个:

   <input type="text" placeholder="Poids" name="poids[]">

所以要解决这个问题,在 $form_colis 方法中,添加 poids 我相信。

【讨论】:

他们正在克隆整个 DIV,从而复制所有输入。

以上是关于如何获取数组发布值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 JSON 响应数组的所有索引值?

DownPicker 选择时如何获取数组索引值

如何从数组中获取随机值?

如何从数组中随机获取最小值?

如何获取数组中的唯一值[重复]

如何获取数组里对象的某个值