PHP发布数组未完成。仅收到第一个元素

时间:2018-07-04 03:42:38

标签: php html dynamic html-table

我需要将数组值从动态html表发布到PHP。 请参考以下示例:

<!----index.html----->
<script>
function addRow(tableID){
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);
    var colCount = table.rows[0].cells.length;
    for(var i=0; i<colCount; i++) {
       var newcell = row.insertCell(i);
       newcell.innerHTML = table.rows[0].cells[i].innerHTML;
    }
}
</script>
<form role="form" action="php_process.php" method="POST">
  <table id="this_table">
    <tr>
       <td><input type="number" id="data_number" name="data_number[]"></td>
    </tr>
  </table>
  <input type="button" value="Add" onclick="addRow('this_table');">
  <button type="submit" value="1">Save</button>
</form>


<!----php_process.php---->
<?php
$data_submit = $_POST['btn_submit'];
$data_number = $_POST['data_number'];
if($data_submit){
   var_dump($data_number);
   exit();
}
?>

当我提交此表单时,即使我添加了多行,也仅显示数组的第一个元素。

Output:
Array ( [0] => 2 )

仅检索到第一个元素。

请帮助我。

我具有与上面完全相同的代码,但是没有问题。很奇怪。

2 个答案:

答案 0 :(得分:-1)

替换此按钮

 <button type="submit" value="1">Save</button>

与此一起

<button type="submit" name="btn_submit" value="1">Save</button>

如果您已经在此页面中将此名称定义为其他提交按钮,则更改此名称并检查data_number此名称,它们不应在同一页面中重复

答案 1 :(得分:-1)

因此,您提供的javascript代码不起作用。但是,以下修改确实可以使其正常工作。

我已经设置了rowCount变量,并且colCount使用零索引而不是1,因为您试图获取不存在的行的单元格长度,因此在创建新元素时没有innerHTML。如果确实需要使用[1],因为您的实际表中有多余的行,请向我们显示实际的相关代码,以便我们提供帮助

<?php
var_dump($_POST);
?>
<!----index.html----->
<script>
function addRow(tableID){
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);
    var colCount = table.rows[0].cells.length;
    for(var i=0; i<colCount; i++) {
       var newcell = row.insertCell(i);
       newcell.innerHTML = table.rows[0].cells[i].innerHTML;
    }
}
</script>
<form role="form" action="php_process.php" method="POST">
  <table id="this_table">
    <tr>
       <td><input type="number" id="data_number" name="data_number[]"></td>
    </tr>
  </table>
  <input type="button" value="Add" onclick="addRow('this_table');">
  <button type="submit" name="btn_submit" value="1">Save</button>
</form>

我已经对此进行了测试