【问题标题】: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;
}

我希望你明白我的意思。

提前谢谢你

【问题讨论】:

标签: javascript php html jquery post


【解决方案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,从而复制所有输入。
    猜你喜欢
    • 2021-12-12
    • 2013-08-12
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多