我遇到了这样的问题,我不能以数组的形式接收数据
HTML:我通过bootstrap模式中的表单发送它,如下所示
<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);
它只接收数组的第一个值
发布于 2018-09-28 06:50:01
你的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
。
发布于 2018-09-28 07:15:21
它们是两种解决方案,即:
解决方案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数组
https://stackoverflow.com/questions/52546022
复制相似问题