无法通过PHP中的表单POST方法接收数组

时间:2018-09-27 22:37:21

标签: javascript php

我遇到了这个问题,我无法以数组形式接收数据

HTML:我是通过这样的引导程序模版中的表单发送的

                 <div class="lines">
                    <div class="col-lg-4">
                      <input type="text" class="form-control"  
                      name="txtqtd[]" id="inputPassword2">
                    </div>
                  </div>

那是我的JS,我在其中附加了多个具有相同名称的输入

                     $(function () {
                      $(".addDiv").click(function () {
                        novoDiv = $("div.lines:first").clone();
                        novoDiv.find("input").val("");
                        novoDiv.insertAfter("div.lines:last");
                        var esvaziaproduto = document.getElementsByName('txtqtd[]');
                      });
                    });

这就是我如何在php中获取数据

$p_item = $_POST['txtqtd'];
$counter = count($p_item);

它只接收数组的第一个值

2 个答案:

答案 0 :(得分:0)

您的JS是否实际发送所有值,是PHP仅接收第一个值还是JS仅发送1个值? (您可以在控制台/网络标签中签入)

如果是第一种选择:

您执行哪种POST(JSON,表单编码等等)?

PHP脚本的传入数据可能类似于txtqtd=1,2,3,4,因此您的$_POST['txtqtd'] = "1,2,3,4"导致计数为1。尝试var_dump()结果以确保结果。

然后,您可能需要爆炸txtqtd之类的$pieces = explode(',', $_POST['txtqtd])值,然后将其计数为pieces -> (4)[1,2,3,4]生成4

答案 1 :(得分:0)

它们是两个解决方案,即:

解决方案1.如果通过ajax发布

$.ajax({ url: yoururl, type: $(this).attr("method"), //put method='post' in form dataType: "JSON", data: new FormData(this), //This will post every field in form as is processData: false, })

因此您可以在服务器上访问

$_POST['txtqtd']; as array

解决方案2。如果要首先从Javacript中访问with中的值,请使用以下简单方法

var $p_item = $("input[name='txtqtd[]']")
          .map(function(){return $(this).val();}).get();
console.log($p_item);

将提供一个JavaScript数组