2011-12-06 11 views
17

Estoy seguro de que la respuesta será 'NO', pero quería preguntar de todos modos solo en caso de que me haya perdido algo.Usando el método POST con HTML Anchor Tags

Todo el mundo sabe que uno pasar datos a una página en una etiqueta de anclaje mediante el uso de el método GET:

Lo que me pregunto es si había una manera de hacer lo mismo, pero el uso el método POST en su lugar?

Mi propósito al hacerlo es mantener limpias las URL que el usuario ve no colocando en ellas algo que no necesitan ver.

Esto no tiene nada que ver con las preocupaciones de seguridad ya que sé que serían formas de obtener los datos que se pasan.

Si la respuesta es no, ¿qué métodos usan las personas para pasar los datos cuando existe el deseo de mantener limpias las URL? ¿Galletas? ¿Algo más?

y cómo hacer frente a los escenarios cuando la longitud de la URL excede la longitud de la solicitud GET permisible

estoy frente a este problema al aplicar la clasificación/paginación con displaytag, todos los parámetros de la petición está anexando en el género/url paginación que es más que la longitud permisible de la solicitud GET.

Respuesta

31

se podría hacer algo como esto:

<form id="myform" method="post" action="target.html"> 
    <input type="hidden" name="name" value="value" /> 
    <a onclick="document.getElementById('myform').submit();">click here</a> 
</form> 
+0

Probé esto pero siempre está haciendo un GET en cromo. ¿Alguna idea de por qué? –

+6
+0

Desafortunadamente, la presencia de '

' afecta al diseño. Preferiría algo que esté completamente oculto. –

0

Puede crear un formulario temporal y enviarlo con el evento onclick de la etiqueta <a>.

1

Puede usar javascript. En onclick of link do form.submit

La única forma que conozco de manejar una URL larga es usar en su lugar POST.

4

Este comportamiento es específico para mostrar la biblioteca de códigos. Permite resultados de búsqueda fácilmente marcadores. Si realmente desea cambiar esto para hacer uso de POST, entonces deberá volver a escribir la biblioteca de etiquetas de visualización o traer un poco de jQuery para manipular los enlaces.

El resto de sus preguntas no sirve para nada. Si desea obtener GET (solicitudes idempotentes, URL marcables, URL rastreables de searchbot, etc.), utilice GET. Si desea POST (solicitudes no idempotentes, URL no marcables, URL no rastreables, etc.), utilice POST.

Por lo general, POST es obligatorio cuando la solicitud puede modificar los datos en el servidor. Piense en un SQL INSERT, UPDATE, DELETE, etc. Ciertamente no hará este tipo de solicitudes GET. Imagine que tiene una tabla con todos los enlaces "eliminar fila" que hacen GET y luego viene un robot de búsqueda ...