簡體   English   中英

無法通過 PHP 中的表單 POST 方法接收數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM