Logo
You
Code

Redireccionar utilizando metodo post en jquery

Autor YouCode - http://www.youcode.com.ar/jquery/redireccionar-utilizando-metodo-post-en-jquery-266

Es muy común necesitar redirigir al usuario por javascript desde nuestro sitio web a otra página, lo cual es muy simple de hacer simplemente cambiando la propiedad window.location.href o bien abriendo una nueva pestaña en el navegador con la función window.open() ...

El problema está en si lo que se desea es redirigir el navegador a otra dirección web y además incluir en esa solicitud variables que viajen por el método POST, esto suele ser necesario cuando se consume alguna API, se desea autenticar automáticamente al usuario en algún sitio enviando sus credenciales, se desea consumir un servicio REST "especial", o simplemente enviar a una nueva página información que no sea visible en la dirección URL. Esta al parecer es una duda muy común en el sitio de stackoverflow y a menudo se confunde el problema con una solicitud AJAX (lo cual es muy simple de resolver usando JQuery),  pero en este caso se requiere redirigir al usuario a otra página, no cargar contenido en segundo plano.

La función redirect_by_post(purl, pparameters, in_new_tab)  recibe 3 parámetros muy sencillos, el primero es una cadena con la dirección url de la página a abrir, el segundo es un objeto javascript con las variables a enviar, y el tercero es un valor booleano que de ser verdadero indica que se desea abrir la página en una nueva pestaña del navegador y en caso de ser un valor falso se abre en la misma pestaña activa.
/* need JQuery */

/* function to redirect a webpage to another using post method */

function redirect_by_post(purl, pparameters, in_new_tab) {
    pparameters = (typeof pparameters == 'undefined') ? {} : pparameters;
    in_new_tab = (typeof in_new_tab == 'undefined') ? true : in_new_tab;

    var form = document.createElement("form");
    $(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", purl).attr("method", "post").attr("enctype", "multipart/form-data");
    if (in_new_tab) {
        $(form).attr("target", "_blank");
    }
    $.each(pparameters, function(key) {
        $(form).append('<input type="text" name="' + key + '" value="' + this + '" />');
    });
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);

    return false;
}

$('#btn').button().click(function() {
    redirect_by_post('http://www.tusitio.com/postvars.php', {
        variable1: 'Carlos',
        variable2: 'Garcia'
    }, true);
});
La función simplemente crea un formulario dentro del cuerpo de la página; lo inicializa para que trabaje tal como se le ha indicado a la función que debe comportarse, y una vez enviado el formulario lo elimina del DOM, esto permite trabajar dinámicamente el número de variables a enviar y funciona bien con los principales navegadores.
 
http://www.youcode.com.ar/jquery/redireccionar-utilizando-metodo-post-en-jquery-266