Сохраняются ли данные формы, если входной тег не имеет имени?

Для эффективности я задаюсь вопросом, по-прежнему ли файл или текст в текстовой области передается на сервер, если вы опускаете атрибут имени или устанавливаете его в null. например,

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

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

Ответ 1

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

Ответ 2

Нет.

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

Ответ 3

он не будет работать напрямую, но вы можете назначить их через вызовы 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 html attribute for the field
'.val' is the jquery object attribute in which jquery access the value in the text box
"$()" or it 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*/

пожалуйста, пожалуйста, код может быть не совсем корректным, так как я его не тестировал, но логика, стоящая за ним, должна быть понятной