2011-01-18 36 views
8

Necesito hacer un formulario para enviar solicitudes POST y GET (debido a algunos errores en IE e iframes), ¿cómo puedes hacerlo?Enviar tanto POST como GET en un formulario

Los datos que se envían no son mega seguros, por lo que no importa si se pueden configurar a través de GET, solo hay que asegurarse de que estén configurados en ambos sentidos.

¡Gracias por la ayuda!

+1

Varias respuestas a continuación muestran * cómo * esto se puede hacer. Solo recuerde que la solicitud * en sí misma * es de * uno y solo un * tipo, es decir, el 'método' de'

'. Se deduce que puede agregar parámetros "' GET'-style "a una solicitud' POST', pero no hacer lo contrario. – jensgram

+2

Realmente me gustaría saber por qué tienes que hacer esto. No puedo pensar en ninguna razón fuera de mi cabeza. Además, los datos que se envían a través de POST no son más seguros que los enviados por GET. Se envía despejado de cualquier manera. Si necesita seguridad, debe usar SSL. – Brad

+0

Eso es imposible. Vaya a la figura –

Respuesta

28

Fácil: Simplemente especifique los datos GET en la URL del formulario.

<form method="POST" action="form.php?a=1&b=2&c=3"> 

Sin embargo, consulte con mucho cuidado cómo se utilizan los datos de la secuencia de comandos de recepción. No use $_REQUEST - en lugar de analizar $_GET y $_POST según sus necesidades exactas y en el orden de prioridad que las necesite.

+0

Woo, me gusta. Fresco. –

+1

Me malinterpretas. Quiero decir que quiero que los datos se envíen como 'POST' y 'GET' a la vez, no para pasar 'GET' datos adicionales. – Cyclone

+1

@Cyclone ah, ya veo. Entonces esto es posible solo con JS como muestra @casablanca. –

2

la forma debe establecer después no la recibe en la url

<form method="post" action="http://www.yourpage.php?firstparam=1&sec=2"> 
. 
. 
</form> 
8

hacer la forma de hacer un post de costumbre y el uso de JavaScript para replicar los valores en la cadena de consulta, así:

HTML:

<form id="myform" method="post" action="..." onsubmit="process()"> 
    ... 
</form> 

JavaScript:

function process() { 
    var form = document.getElementById('myform'); 
    var elements = form.elements; 
    var values = []; 

    for (var i = 0; i < elements.length; i++) 
    values.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(elements[i].value)); 

    form.action += '?' + values.join('&'); 
} 
+0

el único camino a seguir.Tenga en cuenta el límite de 2-4 kilobytes en los parámetros GET a través de –

4

No estoy seguro que bicho que está tratando de moverse, pero puede utilizar jQuery modificar fácilmente la acción de la forma de contener los valores publicados:

guión:

function setAction() { 
    $("#myform").attr("action", "/path/to/script/?" + $("#myform").serialize()); 
} 

html:

<form id="myform" action="/path/to/script/" method="post" onsubmit="setAction()"> 
+1

Lo único que agregaría es .preventDefault() al evento. luego, haga clic en() del botón Enviar formulario después. De esta forma, la forma no se puede enviar hasta que js haya hecho lo suyo. –

+0

@Robert: Los ajustes definitivamente se pueden hacer. Solo quería mostrar el concepto general al usar jQuery para este propósito. – webbiedave

Cuestiones relacionadas