Enviar formulario HTML en la página propia

103

Quiero que se envíe un formulario HTML a sí mismo. ¿Cómo utilizo el actionatributo?

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

¿Cuál fue preferible?

Oto Shavadze
fuente
1
Espero que hayas visto esta publicación stackoverflow.com/questions/1131781/…
Tariqulazam
¿Cuál es el <doctype> de su documento? Te ayudará a responderte.
Milche Patern
simplemente no use el atributo de acción
Milche Patern

Respuestas:

124

En 2013, con todo el material HTML5, puede omitir el atributo 'acción' para autoenviar un formulario

<form>

En realidad, la subsección Envío de formularios del borrador HTML5 actual no permite action = "" (atributo vacío). Va en contra de la especificación.

De esta otra respuesta de Stack Overflow .

Milche Patern
fuente
1
Usé <? Php $ _PHP_SELF?> Y recibí el error de que la acción no puede estar en blanco, supongo que lo dejaré desactivado
Drewdin
2
Estoy confundido. ¿Es válido w3 omitir el actionatributo por completo, pero no dejarlo vacío?
mister martin
¿Necesito acceder a los parámetros con $ _GET o $ _POST entonces?
Negro
21

Puede dejar el atributo de acción en blanco. El formulario se enviará automáticamente en la misma página.

<form action="">

De acuerdo con la especificación de w3c , el atributo de acción debe ser una URL válida no vacía en general. También hay una explicación para algunas situaciones en las que el atributo de acción puede dejarse vacío.

La acción de un elemento es el valor del atributo de formación del elemento, si el elemento es un botón Enviar y tiene tal atributo, o el valor del atributo de acción del propietario del formulario, si tiene uno, o la cadena vacía.

Entonces ambos siguen siendo válidos y funcionan:

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

Si está seguro de que su audiencia está usando navegadores html5, incluso puede omitir el atributo de acción:

<form>
Muratgozel
fuente
¿Puede confirmar que el atributo 'acción' se puede dejar vacío y validar?
Milche Patern
4
No valida. : Valor incorrecto para la acción del atributo en la forma del elemento: no debe estar vacío.
Azd325
2
De acuerdo con la especificación HTML5, no se permite una cadena vacía como acción: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas
1
Esto es lo único que me funciona. <br/> enlace Los atributos de contenido de acción y formación, si se especifican, deben tener un valor que sea una URL válida no vacía, potencialmente rodeada de espacios ........ si tiene uno, o la cadena vacía.
JoelBondurant
el concepto de "no valida" es absurdo porque la única persona que puede validar su XML es usted. Ese es el punto de XML: usted dice un montón de reglas que desea mantener verdaderas para su documento XML, las codifica en DTD y hace que el analizador XML tome un análisis engañosamente difícil. Esta es una de las razones por las que XML sigue siendo importante hoy en día: puede tomar cualquier modelo que desee, ya sea JSON, texto, csv, escribir un transformador simple de ese formato a XML, escribir un DTD para ese XML y, bam, omite la necesidad para escribir su propio validador, ¡XML ya lo hizo!
Dmitry
21

Utilizar ?:

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

Enviará al usuario de regreso a la misma página.

Le Codeur
fuente
¡Esto es asombroso!
beppe9000
3
No tan asombroso. Esto eliminaría todas las cadenas de consulta de la URL actual si las tiene.
OMA
1
Quiero eliminar las cadenas de consulta: 3
VoidZA
12

Si está enviando un formulario usando php, asegúrese de usar:

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

por seguridad.

Peros
fuente
-1

Puedes hacerlo usando la misma página en el atributo de acción: action='<yourpage>'

DarkAjax
fuente