Soumettre le formulaire HTML sur la page personnelle

103

Je souhaite qu'un formulaire HTML se soumette à lui-même. Comment utiliser l' actionattribut?

  1. <form action="">
  2. <form action="#">
  3. <form action="some/address">
  4. <form>

Qu'est-ce qui est préférable?

Oto Shavadze
la source
1
J'espère que vous avez vu ce message stackoverflow.com/questions/1131781/…
Tariqulazam
Quel est le <doctype> de votre document ?? Cela vous aidera à vous répondre.
Milche Patern
tout simplement pas utiliser l'attribut d'action
Milche Patern

Réponses:

124

En 2013, avec tous les éléments HTML5, vous pouvez simplement omettre l'attribut 'action' pour soumettre un formulaire par vous-même

<form>

En fait, la sous-section Soumission de formulaire du brouillon HTML5 actuel n'autorise pas l'action = "" (attribut vide). C'est contraire à la spécification.

De cette autre réponse Stack Overflow .

Milche Patern
la source
1
J'ai utilisé <? Php $ _PHP_SELF?> Et j'ai obtenu l'erreur que l'action ne peut pas être vide, je suppose que je suis malade, laissez-le simplement
Drewdin
2
Je suis confus. Est-il valide w3 de laisser tous les actionattributs désactivés , mais de ne pas le laisser vide?
mister martin
Pour que je dois accéder aux paramètres avec $ _GET ou $ _POST alors?
Noir
22

Utilisez ?:

<form action="?" method="post">

Cela renverra l'utilisateur à la même page.

Le Codeur
la source
C'est génial!
beppe9000
3
Pas si génial. Cela supprimerait toutes les chaînes de requête de l'URL actuelle si elle les a.
OMA
1
Je veux supprimer les chaînes de requête: 3
VoidZA
21

Vous pouvez laisser l'attribut d'action vide. Le formulaire se soumettra automatiquement dans la même page.

<form action="">

Selon la spécification w3c , l'attribut d'action doit être une URL valide non vide en général. Il existe également une explication pour certaines situations dans lesquelles l'attribut action peut être laissé vide.

L'action d'un élément est la valeur de l'attribut formaction de l'élément, si l'élément est un bouton Soumettre et possède un tel attribut, ou la valeur de l'attribut action de son propriétaire de formulaire, s'il en a un, ou bien la chaîne vide.

Donc, ils sont tous les deux toujours valides et fonctionnent:

<form action="">
<form action="FULL_URL_STRING_OF_CURRENT_PAGE">

Si vous êtes sûr que votre public utilise des navigateurs html5, vous pouvez même omettre l'attribut action:

<form>
Muratgozel
la source
Pouvez-vous confirmer que l'attribut «action» peut être laissé vide et valider?
Milche Patern
4
Ne valide pas. : Valeur incorrecte pour l'action d'attribut sur la forme de l'élément: doit être non vide.
Azd325
2
Selon la spécification HTML5, une chaîne vide n'est pas autorisée comme action: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas
1
C'est la seule chose qui fonctionne pour moi. <br/> lien Les attributs de contenu action et formaction, s'ils sont spécifiés, doivent avoir une valeur qui est une URL non vide valide potentiellement entourée d'espaces ........ s'il en a un, ou bien la chaîne vide.
JoelBondurant
le concept de «ne valide pas» est absurde car la seule personne qui peut valider votre XML, c'est vous. C'est le point de XML - vous dites un tas de règles que vous voulez maintenir vraies pour votre document XML, les encoder en DTD et faire en sorte que l'analyseur XML prenne une analyse faussement difficile. C'est l'une des raisons pour lesquelles XML est toujours important aujourd'hui - vous pouvez prendre n'importe quel modèle que vous voulez, que ce soit JSON, texte, csv, écrire un simple transformateur de ce format en XML, écrire une DTD pour ce XML, et bam, vous ignorez le besoin pour écrire votre propre validateur, XML l'a déjà fait!
Dmitry
12

Si vous soumettez un formulaire en utilisant php, assurez-vous d'utiliser:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

pour la sécurité.

Mais
la source
-1

Vous pouvez le faire en utilisant la même page sur l'attribut action: action='<yourpage>'

DarkAjax
la source