[英]Cant receive an array by form POST method in 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);
它只接收數組的第一個值
你的 JS 是否真的發送了所有的值,是 PHP 只接收第一個還是 JS 只發送 1 個值? (您可以檢查您的控制台/網絡選項卡)
如果是第一個選項:
您執行哪種 POST(JSON、表單編碼等)?
您的 PHP 腳本的傳入數據可能類似於txtqtd=1,2,3,4
,因此您的$_POST['txtqtd'] = "1,2,3,4"
導致計數為1
。 嘗試var_dump()
結果以確保。
然后你可能需要像$pieces = explode(',', $_POST['txtqtd])
txtqtd
$pieces = explode(',', $_POST['txtqtd])
這樣的txtqtd
值$pieces = explode(',', $_POST['txtqtd])
然后將結果變成pieces -> (4)[1,2,3,4]
計數4
.
它們是兩種解決方案,即:
解決方案 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 中的值,只需使用下面的簡單方法
var $p_item = $("input[name='txtqtd[]']")
.map(function(){return $(this).val();}).get();
console.log($p_item);
將給出一個 JavaScript 數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.