link - html title attribute
POST de una etiqueta<A> (8)
Claramente, no sin javascript submit ().
¿Es posible hacer un POST solo con una etiqueta <a>
? Sé que las etiquetas de anclaje son generalmente solo para GET, y sé que puedo usar Javascript para hacer esto (como en la solicitud de publicación de JavaScript, como un envío de formulario ), pero para mí eso parece un poco complicado. ¿Hay alguna manera de hacer esto con HTML directo?
En caso de que sirva a alguien:
<a href="/your-route"
onclick="event.preventDefault();
document.getElementById(''magic-form'').submit();">
Magic Action
</a>
<form id="magic-form" action="/your-route"
method="POST" style="display: none;">
{{ csrf_field() }} <!-- from your framework -->
<input type="hidden" name="field1" value="value1" />
<!-- other fields -->
</form>
Las 2 formas en que pienso son con JavaScript (como dijiste) o mediante la inscripción del servidor.
Básicamente enviarías la solicitud GET (con A) a algún archivo de servidor, lo que cambiaría los vars GET a POST y luego volvería a enviarlos instantáneamente (redirigir la ubicación). Pero eso arruinaría las estadísticas de referencia, creo.
No hay forma de POST
un elemento a usando solo HTML.
Como se puede ver en este fragmento de DTD ( especificación HTML 4.01 ):
<!ELEMENT A - - (%inline;)* -(A) -- anchor -->
<!ATTLIST A
%attrs; -- %coreattrs, %i18n, %events --
charset %Charset; #IMPLIED -- char encoding of linked resource --
type %ContentType; #IMPLIED -- advisory content type --
name CDATA #IMPLIED -- named link end --
href %URI; #IMPLIED -- URI for linked resource --
hreflang %LanguageCode; #IMPLIED -- language code --
rel %LinkTypes; #IMPLIED -- forward link types --
rev %LinkTypes; #IMPLIED -- reverse link types --
accesskey %Character; #IMPLIED -- accessibility key character --
shape %Shape; rect -- for use with client-side image maps --
coords %Coords; #IMPLIED -- for use with client-side image maps --
tabindex NUMBER #IMPLIED -- position in tabbing order --
onfocus %Script; #IMPLIED -- the element got the focus --
onblur %Script; #IMPLIED -- the element lost the focus --
>
No hay ningún atributo que controle si usar POST
o GET
con un elemento a.
Tienes que guiarlo, si quieres abusar de la semántica.
No, no hay forma de hacerlo sin el uso de secuencias de comandos. Aunque puede usar CSS para darle un estilo a un botón Enviar estándar, se verá y actuará más como una etiqueta.
No, realmente no. Sin embargo, puedes hacer algo como esto:
<form action="theUrl" method="POST">
<input type="hidden" name="param1" value="val" />
<input type="hidden" name="param2" value="val2" />
<a href="#" onclick="this.parentNode.submit()">Go to that link!</a>
</form>
Sin embargo, deberías encontrar una mejor manera. Este no se degrada graciosamente.
Puede usar CSS para hacer que un <input type="submit">
parezca un hipervínculo.
Respuesta simple: no. Necesita usar javascript para hacer este tipo de cosas; ya que cuando haces un POST, lo que estás haciendo es enviar los datos en la solicitud HTTP. Con get, solo lo está enviando como parte de la cadena (por lo tanto, puede hacerlo a través del valor href
).