2011-06-27 8 views
5

Tengo una función jquery, haciendo $ .post de un valor para una función php. Esta función php coloca este valor en $ _SESSION y muestra el contenido apropiado.

Me gustaría que la ejecución no continúe hasta que se complete la publicación, ya que después de $ .post se muestra el contenido, y el nuevo valor de $ _SESSION no surte efecto hasta la próxima actualización.

¿Cómo puedo hacer esto?

Gracias!

+1

¿Desea detener javascript o php mientras se envía la solicitud? – matzahboy

+0

¿No podría simplemente recargar la página usando window.location? – Alfred

Respuesta

0

suena como si estuviera haciendo una porción de código más complicada de la necesaria para lograr lo que desea lograr.

si el cliente (javascript) tiene los datos necesarios para permitir que el servidor (PHP) termine de renderizar la página durante la carga de la página, entonces el cliente (javascript) debe haber obtenido esa información del servidor (PHP) imagina. entonces, si el servidor (PHP) tenía los datos necesarios antes de que comenzara a renderizar la página, debería haber configurado la variable de sesión antes de renderizar.

esta scenaraio no parece tener mucho sentido. ¿Cuál es la información que la página envía al servidor con ajax durante su carga? ¿Recibirá la entrada del usuario de alguna manera durante la carga de la página que debe enviar de vuelta al servidor para finalizar la representación de la página? ¿Podemos ver algún código?

1

Para eso sirven las devoluciones de llamada. Pasar una función a uno de los parámetros $.post() y se ejecuta sólo cuando la solicitud tiene éxito:

$.post("test.php", function(data) { 
    alert("Data Loaded: " + data); 
}); 

document.write('This won`t wait for ajax'); 

este código se ejecutará la parte alert() sólo después de la petición Ajax termina la carga, pero document.write() ejecutará de inmediato, sin esperar una respuesta.