Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2012, 15:06
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Метод 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. Видимо есть еще отличия?!
Скорее всего я чего-то не понимаю, помогите пожалуйста разобраться.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2012, 15:21
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ZaValera,
1. Нужон код страницы с формой
2. Формы имхо лучше субмитить
a) По кнопке
b) через Name или document.getElementById("MyForm");
<form id="MyForm" ..
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2012, 15:35
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Вот код страницы с формой:

<!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>


Сообщение от Deff Посмотреть сообщение
2. Формы имхо лучше субмитить
a) По кнопке
Это конечно да, но как раз вопрос и состоит в том, чтобы обойтись без стандартной кнопки.
Сообщение от Deff Посмотреть сообщение
b) через Name или document.getElementById("MyForm");
<form id="MyForm" ..
Я почти уверен, что от того, КАК найти форму в DOM, ничего не зависит. Я попробовал и через name, и через ID - все то же самое.
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2012, 20:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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>
Ответить с цитированием
  #5 (permalink)  
Старый 20.06.2012, 21:00
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Deff, факт есть факт, submit() данные не передаёт, интересно в чём причина
Ответить с цитированием
  #6 (permalink)  
Старый 20.06.2012, 21:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

тип кнопки 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 вы не увидите на сервере.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 20.06.2012 в 21:18.
Ответить с цитированием
  #7 (permalink)  
Старый 20.06.2012, 21:30
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от bes
Deff, факт есть факт, submit() данные не передаёт, интересно в чём причина
Да мну сталкивался.. но склероз (- могет зависит от enctype="multipart/form-data" и method ?
Ответить с цитированием
  #8 (permalink)  
Старый 20.06.2012, 22:37
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

По моим экспериментам, submit() нормально отправляет данные из элементов с заданным атрибутом name, кроме кнопочных элементов, а input type="submit" также игнорирует кнопочные элементы, но отправляет своё value.
В этом наверное и правило.
Ответить с цитированием
  #9 (permalink)  
Старый 20.06.2012, 22:39
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bes,
Да - про Name - читал - точно!
Ответить с цитированием
  #10 (permalink)  
Старый 20.06.2012, 22:47
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

И где-то про всё это в мудрых источниках написано, поискал в MDN - не нашёл, поисковик тоже мало, что даёт, подобных тем - тьма, в большинстве нет ответа, но раз эксперимент показал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает метод submit KamalovRadik jQuery 13 17.03.2015 14:12
Метод submit не работает в FF Keksman Firefox/Mozilla 2 08.02.2012 16:10
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
submit в iframe по событию change vovasvv jQuery 1 21.05.2010 09:37