Метод submit() не передает массив $_POST
Добрый день!
Есть форма для отправки данных на сервер: <form id="loadForm" enctype="multipart/form-data" action="upload.php" method="post" > <input type="button" name="upload" value="Загрузить" onClick = "document.forms[0].submit()"/> </form> Содержание файла upload.php: <?php print_r($_POST); ?> Проблема заключается в том, что если инициировать submit с помощью метода формы, то PHP-скрипт выдает - Array ( ) . Т.е. массив $_POST пустой. А вот если заменить <input type="button" name="upload" value="Загрузить" onClick = "document.forms[0].submit()"/> на <input type="submit" name="upload" value="Загрузить"/> то все в порядке - Array ( [upload] => Загрузить ). Везде пишут, что разница между кнопкой submit и методом submit() только в том, что не вызывается событие onsubmit. Видимо есть еще отличия?! Скорее всего я чего-то не понимаю, помогите пожалуйста разобраться. |
ZaValera,
1. Нужон код страницы с формой 2. Формы имхо лучше субмитить a) По кнопке b) через Name или document.getElementById("MyForm"); <form id="MyForm" .. |
Вот код страницы с формой:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link REL=STYLESHEET TYPE="text/css" HREF="main.css"> </head> <body> <form id="loadForm" enctype="multipart/form-data" action="upload.php" method="post" > <input type="button" name="upload" value="Загрузить" onClick = "document.forms[0].submit()"/> </form> </body> </html> Цитата:
Цитата:
|
ZaValera,
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link REL=STYLESHEET TYPE="text/css" HREF="main.css"> </head> <body> <form id="loadForm" class="container" method="post" enctype="multipart/form-data" action="upload.php" > <input type="text" value="Загрузить"/> <input id="submit" style="display:none" type="submit" name="upload" value="Загрузить"/> </form> </body> <input type="button"value="Загрузить" onclick="document.getElementById('submit').click()"/> </html> |
Deff, факт есть факт, submit() данные не передаёт, интересно в чём причина
|
тип кнопки submit это не просто кнопка отправляющая форму, у нее есть свои плюсы. Как известно, в одной форме можно хоть сотню кнопок submit сунуть, и все они будут отправлять форму. Но отличие у них таково, submit ведет себя присуще input с типом radio, тоесть лишь единственный результат. Либо ничего если его не трогали.
Возмем к примеру радиобатоны: <input type="radio" value="1" /> <input type="radio" value="2" /> <input type="radio" value="3" />У каждого радио батона есть свойство value и на сервер будет отправлен value выбранного радиобатона. Если же мы не тронем ни одно радиобатона, то и на сервер ничего не придет связанного с радиобатонами. Собственно та же ситуация и с кнопками submit, они работают примерно так же как и радиобатоны, но еще и отправляют форму. Поэтому если вы отправляете форму напрямую через тег form то и параметров этих кнопок submit вы не увидите на сервере. |
Цитата:
|
По моим экспериментам, submit() нормально отправляет данные из элементов с заданным атрибутом name, кроме кнопочных элементов, а input type="submit" также игнорирует кнопочные элементы, но отправляет своё value.
В этом наверное и правило. |
bes,
Да - про Name - читал - точно! |
И где-то про всё это в мудрых источниках написано, поискал в MDN - не нашёл, поисковик тоже мало, что даёт, подобных тем - тьма, в большинстве нет ответа, но раз эксперимент показал.
|
Часовой пояс GMT +3, время: 13:17. |