Foros del Web » Programando para Internet » Javascript »

Llamada con AJAX no espera que script PHP finalice

Estas en el tema de Llamada con AJAX no espera que script PHP finalice en el foro de Javascript en Foros del Web. Buenos dias recurro a ustedes porque ya nose por donde tirar. Os cuento : Tengo el siguiente script ( utilizo jQuery ): @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 24/02/2012, 05:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 33
Antigüedad: 19 años, 9 meses
Puntos: 0
Pregunta Llamada con AJAX no espera que script PHP finalice

Buenos dias recurro a ustedes porque ya nose por donde tirar. Os cuento :

Tengo el siguiente script ( utilizo jQuery ):

Código Javascript:
Ver original
  1. $(".realizar_pedido a").click(function(){
  2.          
  3.          $.ajax(
  4. * * * * {
  5.             async:false,
  6.             cache:false,
  7. * * * * * * url:'validar_carrito.php',
  8. * * * * * * type:'POST',
  9. * * * * * * data:'ing=' + lista_final,
  10. * * * * * * beforeSend:function(objeto){
  11. * * * * * * * *
  12. * * * * * * },
  13. * * * * * * success:function(data){
  14. * * * * * * * * * * *
  15. * * * * * * *},
  16. * * * * * * complete:function(){ }
  17. });
  18.      });

En validar_carrito.php tengo lo siguiente :

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. $consulta_categorias = "INSERT INTO `cecweb`.`enl_pedido` (`ID`, `UID`, `PEDIDO`) VALUES (NULL, '" . session_id() . "', '" . $_POST['ing'] . "');";
  5. $resCategorias = mysql_query($consulta_categorias, $conexion) or die(mysql_error());
  6.  
  7. ?>

Validar carrito lo he modificado 200 veces ya, he utilizado sesiones en vez de base de datos, pero con identico resultado.

La cuestión es que esto en local, funciona casi el 100% de las veces, pero en online... no funciona ni 1.

Parece ser que a php no le da tiempo a finalizar su ejecución antes de que el Javascript pase a la siguiente pagina, no lo se he buscado varias soluciones, como lo de la ejecución sincrona, pero no hay manera, utilice bases de datos como ahora o utilice sesiones para pasar ese dato a la siguiente página es lo mismo.

Se os ocurre alguna idea ?

Basicamente lo que tengo es una variable Javascript que quiero pasar a otra pagina es tan simple como eso, la historia es que esa variable la debe leer PHP entonces, por eso lo hago a traves de sesiones o base de datos.

Me plantee utilizar localStorage pero aun no encuentro la manera de leer desde PHP algo del localStorage, evidentemente se que el localStorage es de lado del cliente y PHP de lado del servidor, pero por ejemplo PHP tiene maneras de leer una cookie que esta en el cliente pero el localStorage de momento no he visto que pueda hacerlo, en fin...

¿ Alguna idea de porque falla esto ?

Gracias por todo
  #2 (permalink)  
Antiguo 24/02/2012, 07:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Llamada con AJAX no espera que script PHP finalice

PHP no lee las cookies del cliente, es el cliente quien se las envía y en cada petición.

debes de utilizar alguna herramienta tipo Firebug para verificar si el request AJAX se está llevando a cabo.

otra manera de garantizar si se ejecutó el INSERT es verificar si se produjo con éxito y devolver un "1" echo 1; al cliente, procesarlo en el success para que así compruebes el éxito en la operación y redireccionar.

si envías una petición AJAX y automáticamente redireccionas el Colector de Objetos del Navegador evitará que la petición se lleve a cabo.

y como comentas localStorage sólo tiene acceso desde cliente
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 24/02/2012, 08:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 33
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Llamada con AJAX no espera que script PHP finalice

Le he puesto en el success un return true y parece ser que esta funcionando mejor ahora...

De todas formas todavia me falta por entender como se hacen estas conexiones, lo que has dixo del colector de objetos del navegador me parece interesante, segun entiendo aqui cada uno lleva un hilo de ejecución diferente, pensaba que era secuencial y hacer hacer la peticion con javascript al archivo PHP, el archivo PHP tenia por asi decirlo "derechos de ejecucion" y no iba a volver a saltarse a la siguiente linea el script de java, pero ya veo que no.

De momento con este cambio esta funcionando, haber si no falla.

Muchas gracias.
  #4 (permalink)  
Antiguo 24/02/2012, 10:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Llamada con AJAX no espera que script PHP finalice

de hecho el javascript del cliente no es multi-hilo, eso se implementa a través de los WebWork's y para navegadores compatibles.

te recuerdo que AJAX simplemente envía peticiones HTTP, si quieres conocer en detalle su funcionamiento, consulta manuales especializados: http://librosweb.es/ajax/index.html
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ajax, espera, funcion, llamada, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.