Когда HTML-форма отправляется без указания метода, используется метод HTTP по умолчанию? GET или POST?
Изменено ли это поведение между стандартами HTML?
При необходимости укажите стандартный документ W3C.
Когда HTML-форма отправляется без указания метода, используется метод HTTP по умолчанию? GET или POST?
Изменено ли это поведение между стандартами HTML?
При необходимости укажите стандартный документ W3C.
Это ПОЛУЧИТЬ.
Посмотрите W3C Superceded Рекомендация 17.3 Элемент FORM.
Выдержка:
<!ATTLIST FORM
%attrs; -- %coreattrs, %i18n, %events --
action %URI; #REQUIRED -- server-side form handler --
method (GET|POST) GET -- HTTP method used to submit the form--
enctype %ContentType; "application/x-www-form-urlencoded"
accept %ContentTypes; #IMPLIED -- list of MIME types for file upload --
name CDATA #IMPLIED -- name of form for scripting --
onsubmit %Script; #IMPLIED -- the form was submitted --
onreset %Script; #IMPLIED -- the form was reset --
accept-charset %Charsets; #IMPLIED -- list of supported charsets --
>
Приятного чтения
Здесь - ссылка W3C, в которой указано, что GET является значением по умолчанию.
Если не указано, значением по умолчанию является GET. Я не вижу никаких указаний на то, что такое поведение всегда было другим. И имеет смысл, что GET является значением по умолчанию, поскольку он указывает, что метод должен использоваться для действий без побочных эффектов.
http://www.faqs.org/faqs/www/cgi-faq/section-37.html
Цитаты из http://www.w3.org/TR/html401/interact/forms.html#h-17.3:
метод = получить | сообщение [CI]
Этот атрибут указывает, какой метод HTTP будет использоваться для отправки набора данных формы. Возможными (без учета регистра) значениями являются "get
" (по умолчанию) и "post
". См. Раздел о представлении формы для информации об использовании.17.13.1 Метод подачи формы
Атрибут метода элементаFORM
указывает метод HTTP используется для отправки формы обработчику. Этот атрибут может принимать два значения:
get: с помощью метода "get" HTTP набор данных формы добавляется к URI, указанному атрибутом действия (с вопросительным знаком ( "?" ) в качестве разделителя), и этот новый URI отправляется к обрабатывающему агенту.
post: С помощью метода "post" HTTP набор данных формы включается в тело формы и отправляется обработчику.
Метод "get" должен использоваться, когда форма является идемпотентной (т.е. не вызывает побочных эффектов). Многие поиски в базе данных не имеют видимых побочных эффектов и сделать идеальные приложения для метода "get" .
Согласно стандарту W3C, который вы запрашиваете, по умолчанию должно быть GET.
(более полный ответ, также о действии и энтипе)
По умолчанию "method", "action" и "enctype" формы HTML,, если они не указаны,
GET, текущий URL и application/x-www-form-urlencoded
соответственно.
(т.е. по умолчанию форма запрашивает текущую страницу с введенными параметрами.)
Это поведение никогда не менялось, кроме "действия" (в HTML 4 это требовалось). Ссылок:
method: "Отсутствующее значение по умолчанию для атрибута метода... состояние GET."
Действие:
Действие элемента - это значение атрибута formaction elements, если элемент представляет собой кнопку Submit и имеет такой атрибут, или значение его атрибута действия владельцев формы, если он есть, или пустую строку. & lt;...> Если action - пустая строка, пусть action будет URL-адресом документов в форме документа.
enctype: "По умолчанию для атрибута enctype отсутствует значение по умолчанию... состояние application/x-www-form-urlencoded
."
Метод: "Возможные (без учета регистра) значения:" get "(по умолчанию) и" post "."
действие: нет по умолчанию, DTD требует этого
enctype: "Значением по умолчанию для этого атрибута является" application/x-www-form-urlencoded "."
<!ATTLIST FORM
%attrs; -- %coreattrs, %i18n, %events --
action %URI; #REQUIRED -- server-side form handler --
method (GET|POST) GET -- HTTP method used to submit the form--
enctype %ContentType; "application/x-www-form-urlencoded"
Метод: "Это может быть либо GET или POST, и по умолчанию GET."
действие: нет явного предложения, только в DTD
enctype: "По умолчанию используется application/x-www-form-urlencoded."
<!ATTLIST FORM
action %URL #IMPLIED -- server-side form handler --
method (%HTTP-Method) GET -- see HTTP specification --
enctype %Content-Type; "application/x-www-form-urlencoded"
метод: нет явного предложения, только в DTD
action: "URI действия формы по умолчанию - базовый URI документа"
enctype: "Кодировка по умолчанию для всех форм - это application/x-www-form-urlencoded".
<!ATTLIST FORM
ACTION CDATA #IMPLIED
METHOD (%HTTP-Method) GET
ENCTYPE %Content-Type; "application/x-www-form-urlencoded"
Когда я использую php, который передает данные себе (без указания действия)
<form method="post" enctype="multipart/form-data" name="upform">
<input type="submit" value="Ajax Upload" onclick="return upload(upform);" />
</form>
действие по умолчанию - отправить данные в файл, который отправил форму. Но как я могу получить доступ к действию по умолчанию или имени отправляющего файла из javascript?
function upload(form)
{
var request = new XMLHttpRequest();
alert("Action="+form.action);
request.open("POST", form.action);
}
Единственный способ, которым я нашел, - установить действие на "#", но мне нравится знать, есть ли лучший способ.