web-dev-qa-db-fra.com

Les données de formulaire sont-elles encore transférées si la balise d'entrée n'a pas de nom?

Par souci d'efficacité, je me demande si un fichier ou un texte dans une zone de texte est toujours transféré sur le serveur si vous omettez l'attribut name ou si vous le définissez à null. par exemple

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

Je remarque que les données ne sont pas disponibles sur le serveur si vous faites cela.

47
Jamie Kitson

Si je comprends bien, la spécification W3C exige que chaque élément d’entrée de formulaire ait un attribut name spécifié. Sinon, cet élément ne sera pas traité. La source

56
Petter

Non. 

J'ai vérifié cela dans tous les navigateurs - les champs avec un nom vide/manquant sont manquants dans la demande POST/GET du navigateur. Peu importe qu'ils aient ou non un identifiant (je pensais que les navigateurs pourraient utiliser un identifiant comme nom, mais non).

27
DenisS

cela ne fonctionnera pas directement mais vous pouvez les assigner via des appels AJAX en JavaScript, idk sait vraiment si cela a vraiment une application dans le monde réel (on pourrait obscurcir les paramètres que le serveur attend)

ayant 

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

JS à traiter serait (Utilisant jQuery pour traiter 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*/

veuillez noter que le code n'est peut-être pas tout à fait correct car je ne l'ai pas testé, mais la logique derrière cela devrait être explicite.

0
Dan Espinoza