PHP пост массив не завершен. Получен только первый элемент - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно опубликовать значение массива из динамической 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 голосов
/ 04 июля 2018

Так что предоставленный вами код 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>

Я проверял это, и оно работает

0 голосов
/ 04 июля 2018

Заменить эту кнопку

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

с этим

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

если вы уже определили это имя для другой кнопки отправки на этой странице, измените это имя, а также проверьте data_number это имя, они не должны повторяться на той же странице

...