Es posible hacer un POST de solo un <a> etiqueta? Sé que las etiquetas de anclaje generalmente son sólo para la Consigue, y sé que puedo usar javascript para hacer esto (como en JavaScript solicitud post de como presentar un formulario de), pero a mí eso me parece un poco desordenado. Es allí una manera de hacer esto con la recta HTML?

InformationsquelleAutor Carrotman42 | 2011-05-30

10 Comentarios

  1. 26

    No hay manera de POST un a elemento utilizando sólo HTML.

    Como puede verse en esta DTD fragmento (Especificación de 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 controla el uso de POST o GET con un a elemento.

    Que han scripts, si quieren abusar de la semántica.

    • Me gusta la forma en que concluyó con «si quieren abusar de la semántica», me.e uno no debería hacer esto y debe hacer uso de la forma recomendada de hacer tales cosas, yo.e el uso de un form para enviar datos.
  2. 32

    Realidad, no, no. Usted puede, sin embargo, 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>

    Usted debe encontrar una mejor manera, sin embargo. Este uno no se degrada con gracia.

    • onclick=»this.parentNode.submit()» debe ser onclick=»evento».preventDefault(); este.parentNode.submit()» usando jQuery. Va a ser mejor.
    • Poco importa, ya que la forma en que se presenta. De nuevo, lo ideal sería no hacerlo del todo, y el estilo de un botón para que parezca un vínculo en su lugar.
  3. 10

    Puede utilizar CSS para hacer un <input type="submit"> ver como un hipervínculo.

    • <input> no <a> ?
    • Sí, pero esto se puede lograr lo que él está tratando de hacer.
  4. 4

    En caso de que se sirve 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>
  5. 1

    Respuesta es Simple: no. Usted necesidad de utilizar javascript para hacer este tipo de cosas; desde cuando hacer un POST de lo que estamos haciendo es enviar los datos de la solicitud HTTP. Con conseguir que usted está a solo enviar como parte de la cadena (por lo tanto usted puede hacerlo a través de la href valor).

  6. 0

    No hay ninguna forma de hacerlo sin el uso de secuencias de comandos. Aunque puede utilizar CSS para el estilo de un estándar botón de Enviar para lucir y actuar más como una etiqueta.

  7. 0

    Básicamente, usted no puede utilizar una etiqueta de anclaje para una solicitud POST. Sin embargo, hay un sencillo truco para lograr esto.

    <form id="myform" method="post" action="target.html"></form>
    <a onclick="document.getElementById('myform').submit();">Submit to action</a>

    He probado esto y ya utilizando en nuestro código de producción.

  8. -1

    Las 2 maneras creo que son con JavaScript (como usted dice) o a través del servidor scription.

    Que había básicamente enviar la solicitud GET (con la a) a algún servidor de archivos, que iba a cambiar el OBTENER vars para PUBLICAR y, a continuación, vuelva a enviar al instante (redirección de la ubicación). Pero que desastre el referer stats creo.

Dejar respuesta

Please enter your comment!
Please enter your name here