Foros del Web » Programando para Internet » Javascript » Frameworks JS »

actualizar una bd al cerrar una ventana

Estas en el tema de actualizar una bd al cerrar una ventana en el foro de Frameworks JS en Foros del Web. hace tiempo he estado tratandod e encontrar la solucion y no la he conseguido mi problema es el siguiente estoy haciendo un sistema en php ...
  #1 (permalink)  
Antiguo 13/03/2010, 16:48
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
actualizar una bd al cerrar una ventana

hace tiempo he estado tratandod e encontrar la solucion y no la he conseguido mi problema es el siguiente estoy haciendo un sistema en php y utilizo bastante ajax rsulta q cuando quiero el usuario ingresa hace su login se actualiza en la bd el campo estado cambiando de 0 a un para q otro usuario no pueda entrar mientras ese usuario este activo cre un link en la apgian para cerrar la sesion y funciona bien el problema viene cuando el usuario no presiona el boton se q la solucion esta en ajax pero he intentado de muchas formas y no encuentro la solucion lo estoy intentando con event.clientY y eventclient.X para saber la posion del cursor y la ejecuto al hacer un onbeforeunload y hasta ahi he determinado la pocion si esta fuera d emi pagina pero no es al solucion encesito ayuda urgente si alguien sabe d ealguna forma suplico su ayuda por favor
  #2 (permalink)  
Antiguo 13/03/2010, 17:12
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: actualizar una bd al cerrar una ventana

Es una simple idea, tal vez no te guste. Ok, utilizas una función ajax para cambiar el valor en el campo de la tabla ejecutada por el evento onunload. Seguro ya haz probado eso y no se termina de ejecutar y por eso no funciona. Eso es natural, si se cierra la ventana se cancela la ejecución de los scripts. Pero si se ejecutaría si hicieras un alert. De este modo:

<body onunload="cambiarEstado();">

Código:
function cambiarEstado() {
  url = 'proceso.php?cs=1';
  ajx.open("GET", url, true);
	ajx.onreadystatechange = function() {
	 
	   if (ajx.readyState == 4) {
		  var rst = ajx.responseText;

		 if (rst == '1') alert('Se ha cerrado la sesión');
	   }
	}
	ajx.send(null);
}
Cuando colocas un alert si se termina de ejecutar el script y por eso el proceso ajax si termina y el valor en tu tabla puede volver a cero. Es probable que no te guste ese alert, en verdad nunca encontré otra solución. Espero que te sirva.

Etiquetas: ajax, bd, cerrar, ventanas
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 13:34.