Вопрос:
У меня есть динамическая таблица html, и я хочу получить данные из этой таблицы, используя метод POST. Можно ли сделать это? Какие другие способы вы бы рекомендовали достичь этого. Вот простой пример из того, что я получил:
<html> <form id=»form1″ method=»post» action=»process.php»> <table id=»tblSample» name=»tblSample»> <tbody> <tr> <td> John Appleseed </td> <td> Australia </td> </tr> <tr> <td> Mary Poppins </td> <td> USA </td> <tr> </tbody> </table> </form> </html>
Возможно, это возможно для хранения информации в массиве или переменной javascript, чтобы отправить ее в файл действия, я не уверен.
Я не знаю, нужно ли это делать, но таблица генерируется динамически. Строки и ячейки добавляются пользователем с помощью javascript.
Я буду очень благодарен за ваши ответы.
Лучший ответ:
Доступ к таблице невозможен как таковой, если вы не используете элементы формы (input, textarea и т.д.) И добавляете к ним атрибут name; то вы можете получить доступ к своим элементам с помощью $_POST.
Если у вас есть данные в таблице, лучший способ получить наши данные – это JavaScript, используя innerHTML.
Ответ №1
Вы можете назначить innerHTML формы переменной и использовать AJAX, чтобы отправить ее обратно на сервер в виде строки или сохранить в textarea и сделать то же самое. Независимо от этого, вам нужно проанализировать строку для извлечения данных.
Ответ №2
Таблица не является элементом управления формой и не будет передаваться в виде данных формы, даже если она включена в тег формы (как в вашем примере).
Если вы хотите отправить табличные данные, вам нужно будет использовать Javascript для его извлечения. Затем вы можете вставить данные в скрытый элемент формы или отправить данные через вызов AJAX.
Ответ №3
Вы можете попытаться использовать:
HTML:
<form id=»form1″ method=»post» action=»process.php» onSubmit=»submitAction();»> <input type=»hidden» name=»table_content» id=»table_content»/> <input type=»submit» name=»submit» value=»Send»/>
JavaScript:
function submitAction() { var form = document.getElementById(«form1»); form.table_content.value = document.getElementById(«tblSample»).innerHTML; return form.submit(); } Ответ №4
Это очень много для решения этой проблемы. Например: 1) Использовать ajax: Поместите ваши данные в некоторый html контейнер, например, с именем класса ‘formData_name’, например, или с id = ‘formData _’ +name = где name – это имя этих данных. Затем вы в JS просматриваете весь этот диапазон и отправляете ajax. Это очень просто, если вы используете jquery. В чистых js это тоже не сложно, но код будет более сильным.
2) Поместите свои данные в некоторый html контейнер – например, с именем класса “formData_name”, например, или с id = ‘formData _’ +name = где name – это имя этих данных. Привяжите кнопку отправки, когда при нажатии кнопки “Отправить” вы создадите добавленные к dom входные скрытые поля с именем adn return true. 3) Вы можете отправить innerHTML по почте через обязательное событие отправки и добавленное скрытое поле для хранения innerHTML и проанализировать его на сервере. 4) вы можете заменить все td на вход в действие отправки
Но все эти решения не очень хорошие, и если вы должны сделать что-то из этого, тогда ваша архитектурная архитектура плохой