我遇到了这个问题,我无法以数组形式接收数据
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);
它只接收数组的第一个值
答案 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数组