2010-12-03 358 views
8

Soy relativamente nuevo en Jquery y me preguntaba cómo se publicarían variables en otra página y luego se redirigiría? He utilizado la función ajax, la redirección funciona bien, pero hay variables son capturados en POST (que están vacíos)Pasar variables con POST a otra página con Jquery

function linkWO() { 

    $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "LinkTagOut.aspx", 
      dataType: "json", 
      data: "{id=1}", 
      complete: 
      function() { 
       window.location = "LinkTagOut.aspx"; 
      } 

    }); 
} 

en mi archivo aspx

<a href="javascript:void(0);" onclick="return linkWO();"><span>Link</span></a> 
+0

gnomixa - Puede que esté lejos de la base aquí, pero me parece que podría estar malinterpretando el propósito de la llamada ajax. Parece que desea PUBLICAR algunos valores en una página, como si estuviera enviando un formulario (a diferencia de lo que ocurre de forma asincrónica, lo que significa que no navega fuera de su página actual). ¿Es eso correcto? – Ender

+0

sí, tienes razón. ¿Es eso posible sin enviar un formulario? – sarsnake

+0

He actualizado mi respuesta, creo que eso es lo que quiere hacer – kobe

Respuesta

2

Esta respuesta es simplemente una solución rápida

¿por qué no acaba de pasar por la cadena de consulta aquí el código

window.location = "LinkTagOut.aspx?variabletopass=test"; 

desde el sitio jQuery

<form id="target" action="destination.html"> 
    <input type="text" value="Hello there" /> 
    <input type="submit" value="Go" /> 
</form> 
<div id="other"> 
    Trigger the handler 
</div> 

$('#target').submit(function() { 
$ 

.post('ajax/test.html', function(data) {  
}); 
    return false; 
}); 
+0

como nota: dada mi situación, vea los comentarios anteriores, esta fue la forma más adecuada de hacerlo. – sarsnake

+0

en aspnet normalmente el formulario se envía a su página de origen. Entonces, por eso elegí pasar las variables usando querystring. Uno, por supuesto, podría enviar el formulario a su página, luego tratar con las variables POSTed allí y luego redirigir a destination.html. Pero elegí la manera fácil. – sarsnake

3
$.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "LinkTagOut.aspx", 
     dataType: "json", 
     data: { id: 1 }, // or the string: 'id=1' 
     complete: 
     function() { 
      window.location = "LinkTagOut.aspx"; 
     } 

}); 

Desde el (data opción) $.ajax documentation :

Datos que se enviarán al servidor. Se convierte en una cadena de consulta , si aún no hay una cadena. Es anexado a la url para solicitudes GET. Consulte la opción processData para evitar este proceso automático . El objeto debe ser Pares clave/valor. Si el valor es una matriz, jQuery serializa múltiples valores con misma clave en función del valor de la configuración tradicional (que se describe a continuación).

Además, asegúrese de que return false desde el extremo del manipulador de presentar (o lo que dispara la llamada AJAX) para asegurar que una redirección 'normal' no está sucediendo.

+0

@karim ¿cuál es la diferencia entre su código y su código, aparte del hash de datos // – kobe

+0

no funciona. lo intenté ya. – sarsnake

+0

@gov - el parámetro de datos es la diferencia significativa. Necesita ser un objeto o una cadena. Estaba pasando un objeto extraño que no funcionaría. – karim79

0

Tener un vistazo a la opción de "datos" en esta página doc: http://api.jquery.com/jQuery.ajax/

Su problema es que usted está tratando de pasar una cadena JSON (y es válida para pasar una cadena), pero si pasas una cadena, jQuery espera una cadena de consulta parametrizada. Si quieres pasar un objeto json, no debería ser una cadena.

Sin embargo, tenga en cuenta que los objetos json pasados ​​de esta manera se convertirán a una cadena de consulta parametrizada por jQuery, así que si no es inconveniente (como en este caso, donde solo tiene un valor), también puede pasarlo de esa manera comenzar y guardar el guión un poco de trabajo.

0

Si te gusta para codificar menos hacer esto:

  1. incluye jquery.redirect.min.js en su carpeta javascript (js).
  2. archivo de carga después de la escritura de carga JQUERY:

    <script type='text/javascript' src='jquery.js'> 
    </script> 
    
    <script type='text/javascript' src='jquery.redirect.min.js'> 
    </script> 
    
  3. Sólo tiene que sustituir los parámetros deseados en la siguiente línea (copiar/pegar) en el código javascript:

    $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'}); 
    

Este es el El método más simple y más rápido que he encontrado para publicar variables en otra página sin usar la etiqueta del formulario. ¡Buena suerte!

+1

El truco con el código en una lista es agregar cuatro espacios adicionales (8 espacios en total) para formatearlo como código. –

Cuestiones relacionadas