una redireccionar por pasar parametros pagina otra formulario enviar datos con javascript jquery post

javascript - por - redireccionar jquery post



¿Enviar datos POST en redirigir con JavaScript/jQuery? (11)

Esta pregunta ya tiene una respuesta aquí:

Básicamente, lo que quiero hacer es enviar datos de POST cuando cambio la window.location la window.location , como si un usuario hubiera enviado un formulario y hubiera ido a una página nueva. Necesito hacerlo de esta forma porque necesito pasar una URL oculta, y no puedo simplemente colocarla en la URL como un GET por razones estéticas.

Esto es lo que tengo en este momento, pero no envía datos POST.

if(user has not voted) { window.location = ''http://example.com/vote/'' + Username; }

Sé que puede enviar datos POST con jQuery.post() , pero necesito que se envíe con la nueva window.location .

Para recapitular, debo enviar el valor de api_url través de POST a http://example.com/vote/ , mientras envío al usuario a la misma página al mismo tiempo.

Para referencia futura, terminé haciendo lo siguiente :

if(user has not voted) { $(''#inset_form'').html(''<form action="http://example.com/vote/'' + Username + ''" name="vote" method="post" style="display:none;"><input type="text" name="api_url" value="'' + Return_URL + ''" /></form>''); document.forms[''vote''].submit(); }


Aquí hay un método que no usa jQuery. Lo usé para crear un bookmarklet, que verifica la página actual en w3-html-validator.

var f = document.createElement(''form''); f.action=''http://validator.w3.org/check''; f.method=''POST''; f.target=''_blank''; var i=document.createElement(''input''); i.type=''hidden''; i.name=''fragment''; i.value=''<!DOCTYPE html>''+document.documentElement.outerHTML; f.appendChild(i); document.body.appendChild(f); f.submit();


Aquí hay una pequeña función simple que se puede aplicar en cualquier lugar siempre que use jQuery.

var redirect = ''http://www.website.com/page?id=23231''; $.redirectPost(redirect, {x: ''example'', y: ''abc''}); // jquery extend function $.extend( { redirectPost: function(location, args) { var form = ''''; $.each( args, function( key, value ) { value = value.split(''"'').join(''/"'') form += ''<input type="hidden" name="''+key+''" value="''+value+''">''; }); $(''<form action="'' + location + ''" method="POST">'' + form + ''</form>'').appendTo($(document.body)).submit(); } });


Construya y complete un method=POST action="http://example.com/vote" oculto method=POST action="http://example.com/vote" y envíelo, en lugar de usar window.location .


Esto es muy útil para usar:

var myRedirect = function(redirectUrl, arg, value) { var form = $(''<form action="'' + redirectUrl + ''" method="post">'' + ''<input type="hidden" name="''+ arg +''" value="'' + value + ''"></input>'' + ''</form>''); $(''body'').append(form); $(form).submit(); };

luego úsalo como:

myRedirect("/yourRedirectingUrl", "arg", "argValue");


Función genérica para publicar cualquier objeto JavaScript en la URL dada.

function postAndRedirect(url, postData) { var postFormStr = "<form method=''POST'' action=''" + url + "''>/n"; for (var key in postData) { if (postData.hasOwnProperty(key)) { postFormStr += "<input type=''hidden'' name=''" + key + "'' value=''" + postData[key] + "''></input>"; } } postFormStr += "</form>"; var formElement = $(postFormStr); $(''body'').append(formElement); $(formElement).submit(); }


Las respuestas aquí pueden ser confusas, así que le daré un código de muestra con el que estoy trabajando.

Para empezar, tenga en cuenta que no hay ningún parámetro POST para la función de Windows.Settings de script de Java a la que se está refiriendo.

Entonces tienes que ...

  1. Haz una forma dinámica con un parámetro POST.

  2. Coloca dinámicamente un cuadro de texto o cuadros de texto con tus valores deseados para publicar

  3. Invoque el formulario de envío que creó dinámicamente.

Y por el ejemplo.

//---------- make sure to link to your jQuery library ----// <script type="text/javascript" > var form = $(document.createElement(''form'')); $(form).attr("action", "test2.php"); $(form).attr("method", "POST"); $(form).css("display", "none"); var input_employee_name = $("<input>") .attr("type", "text") .attr("name", "employee_name") .val("Peter" ); $(form).append($(input_employee_name)); var input_salary = $("<input>") .attr("type", "text") .attr("name", "salary") .val("1000" ); $(form).append($(input_salary)); form.appendTo( document.body ); $(form).submit(); </script>

Si todo se hace bien, se le redirigirá a test2.php y puede usar POST para leer los valores pasados ​​de employee_name y salario; ese será Peter y 1000 respectivamente.

En test2.php puedes obtener tus valores así.

$employee_name = $_POST[''employee_name'']; $salary = $_POST[''salary''];

Ni que decir tiene, asegúrese de higienizar sus valores pasados.


Puede usar target atributo de target para enviar formularios con la redirección de iframe. Su etiqueta abierta de formulario sería algo como esto:

method="post" action="http://some.url.com/form_action" target="_top"


Si está utilizando jQuery, hay un complemento de redirección que funciona con el método POST o GET. Crea una forma con entradas ocultas y la envía por usted. Un ejemplo de cómo hacerlo funcionar:

$.redirect(''demo.php'', {''arg1'': ''value1'', ''arg2'': ''value2''});

Nota: Puede pasar los tipos de método GET o POST como un tercer parámetro opcional; POST es el valor predeterminado.


por la respuesta de @ Kevin-Reid, aquí hay una alternativa al ejemplo "Terminé haciendo lo siguiente" que evita la necesidad de nombrar y luego busca el objeto de formulario de nuevo al construir el formulario específicamente (usando jQuery).

var url = ''http://example.com/vote/'' + Username; var form = $(''<form action="'' + url + ''" method="post">'' + ''<input type="text" name="api_url" value="'' + Return_URL + ''" />'' + ''</form>''); $(''body'').append(form); form.submit();


SOLUCIÓN NO. 1

//your variable var data = "brightcherry"; //passing the variable into the window.location URL window.location.replace("/newpage/page.php?id=''"+product_id+"''");

SOLUCIÓN NO. 2

//your variable var data = "brightcherry"; //passing the variable into the window.location URL window.location.replace("/newpage/page.php?id=" + product_id);

details


var myRedirect = function(redirectUrl) { var form = $(''<form action="'' + redirectUrl + ''" method="post">'' + ''<input type="hidden" name="parameter1" value="sample" />'' + ''<input type="hidden" name="parameter2" value="Sample data 2" />'' + ''</form>''); $(''body'').append(form); $(form).submit(); };

Código encontrado en http://www.prowebguru.com/2013/10/send-post-data-while-redirecting-with-jquery/

Voy a probar esto y otras sugerencias para mi trabajo.

¿Hay alguna otra manera de hacer lo mismo?