Вопрос по html-form, webforms, html – Передаются ли данные формы, если у входного тега нет имени?

47

В целях эффективности мне интересно, если файл или текст в текстовой области все еще передается на сервер, если вы пропустите атрибут name или установите его в null. например

<input type="file" id="file" name="">
<textarea id="text" name="">

Я замечаю, что данные недоступны на сервере, если вы это сделаете.

Ваш Ответ

3   ответа
56

Спецификация W3C, если я правильно понимаю, требует, чтобы каждый элемент ввода формы имелname атрибут указан. В противном случае этот элемент не будет обработан.Источник

Может кто-нибудь процитировать точный HTML5?
@ CiroSantilli & # x516D; & # x56DB; & # x4E8B; & # x4EF6; & # x6CD5; & # x8F6E; & # x529F; & # x7EB3; & # x7C73; & # x6BD4; & # x4E9A; & # x5A01; & # x89C6;w3.org/TR/html5/…
@CiroSantilli Очень поздний ответ, но конкретная информация, которую вы хотите, на самом деле находится подForm Submissionв частности:"If any of the following conditions are met, then skip these substeps for this element: ... The field element is not an input element whose type attribute is in the Image Button state, and either the field element does not have a name attribute specified, or its name attribute's value is the empty string." - Это явно исключает неназванные поля, которые не вводятся [type = image] из отправляемых.
Точнее, только поля (& # x201C; controls & # x201D;), которые имеютname атрибут вносить в набор данных формы. Без такого атрибута поле будет по-прежнему обрабатываться в обычном режиме, и форму можно отправить, просто без данных из этого поля. Не является ошибкой иметь поле безname приписывать.
@NickHumphrey У меня не так много времени, чтобы прочитать его сейчас, но через 1 минуту я не вижу нужной цитаты. Я вижу, что это "не может быть пустым", но не "что должно быть сделано, если оно есть". Если вы найдете прямую цитату или последовательность цитат, я предлагаю вам поставить ее в ответ и получить репутацию :-)
27

Нет.

Я проверил это во всех браузерах - поля с пустым / отсутствующим именем отсутствуют в запросе POST / GET от браузера. Не имеет значения, имеют ли они или не имеют идентификатор (я думал, что браузеры могут использовать идентификатор для имени, но нет).

Этот конкретный эксперимент не гарантирует, что данные «не представлены» из браузера. Другое возможное объяснение вашего вывода может состоять в том, что форма отправила эти значения, но сервер не смог принять эти значения без имен. Хотя спецификации уточняют реальный случай.
0

он не будет работать напрямую, но вы можете назначать их через вызовы AJAX в JavaScript, idk действительно знает, есть ли у него какое-либо приложение в реальном мире (это может быть запутывание параметров, ожидаемых сервером)

имеющий

<form id="login" method="post" action="someurl">
 <input id="username" type="text" /> 
 <input id="password" type="password" />
 <input type="submit" value="login" />
</form>

JS для обработки будет (используя jQuery для обработки ajax)

$("#login").on("submit",function(ev){
  $.post("someurl",{
    usrn: $("#username").val,
    pwd: $("#password").val       
  },function(ev){
          //this is the callback function that runs when the call is completed successfully
  });
}
/*second argument on $.post is and object with data to send in a post request 
usrn would be the name of the parameter recived in the server 
same for pwd "#username" and  "#password" are the id's html attribute for the field
'.val' is the jquery object's attribute in which jquery access the value in the text box
"$()" or it's equivalent "jQuery()" works like an object constructor that fills 
the attributes with the
DOM data that cover the css selector that this function expects as a parameter*/

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: код может быть не совсем правильным, так как я его не тестировал, но логика, стоящая за ним, не требует пояснений

Похожие вопросы