Foros del Web » Programando para Internet » Javascript »

XMLHttpRequest evento subida completa

Estas en el tema de XMLHttpRequest evento subida completa en el foro de Javascript en Foros del Web. Hola, ¿existe algun evento para asociarle un manejador que indique cuando la subida via AJAX mediante un objeto XMLHttpRequest ha finalizado? No me refiero al ...
  #1 (permalink)  
Antiguo 20/06/2012, 09:05
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
XMLHttpRequest evento subida completa

Hola,

¿existe algun evento para asociarle un manejador que indique cuando la subida via AJAX mediante un objeto XMLHttpRequest ha finalizado?

No me refiero al evento onload, que se refiere a cuando el servidor responde, si no un evento que me indique que la subida esta completa y por tanto el servidor ha comenzado a procesar la respuesta.

Gracias de antemano!
  #2 (permalink)  
Antiguo 20/06/2012, 09:48
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: XMLHttpRequest evento subida completa

Hola:

Me extraña la pregunta ya que con los objetos Ajax no se pueden subir adjuntos (parace que los tiros van por ese lado). Con XMLHttpRequest no se puede usar la cabecera para adjuntar archivos... y si hay adjuntos será por hacer submit en un formulario con las condiciones que ya sabemos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/06/2012, 09:50
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: XMLHttpRequest evento subida completa

La propiedad readyState contiene un entero que determina el estado de la operación.

El tercer estado (HEADERS_RECEIVED) o 3 determina que las cabeceras de respuesta se han recibido y por tanto la petición ya se realizó.

Usa el atributo readystatechange para determinar qué se realizará cuando readyState cambie

XMLHttpRequest.onreadystatechange=function(){
if(XMLHttpRequest.readyState==3){
alert("enviado correctamente");
}
}

Como creo que tu cuestión va más allá de esto, si haces referencia a determinar cuando llegó la información sin necesidad de recibir una respuesta confirmatoria, siento decirte que es imposible. Sólo puede conocerse el estado de la petición cuando hay una respuesta por parte del servidor.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #4 (permalink)  
Antiguo 20/06/2012, 09:56
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: XMLHttpRequest evento subida completa

Hola

caricatos : sí, si que se pueden subir ficheros, porque de hecho me funciona jaja.

dontexplain: creo que con eso me sirve, voy a probarlo, solo quiero cambiar una cosa en la interfaz para decir que el servidor está procesando la respuesta, hasta recibir la respuesta real con el readyStatechange = 4, voy a probarlo!

Gracias

Edito: el evento que propones me salta cuando la peticion se ha acabado de completar, y no cuando la información lllega. El caso es que envio un fichero grande que tiene que subirse a otro servidor, y claro, eso lleva tiempo. Pero el evento salta cuando responde el servidor

Investigare un poco mas a ver si estoy haciendo mal algo. Gracias!
  #5 (permalink)  
Antiguo 20/06/2012, 10:04
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: XMLHttpRequest evento subida completa

Esta es mi funcion, cuando readyState vale 2 significa que se ha recibido todo correctamente, pero tanto con 2 como con 3 el evento salta al responde el servidor

Código:
this.send = function()
	{
		req = new XMLHttpRequest();  
		req.open('POST', 'index.php?r=file/UploadFile', true); 	
		
		req.upload.addEventListener("progress", this.uploadProgress, false);  
		//req.upload.addEventListener("load", this.uploadComplete, false); 	
		req.addEventListener("load", this.uploadComplete, false); 	
		req.addEventListener("error", this.uploadFailed, false);  
		req.addEventListener("abort", this.uploadCanceled, false);  
		
		req.onreadystatechange=function()
		{
			if(req.readyState==3){
			alert("enviado correctamente");
			}
		}
		
		var formData = new FormData();
		formData.append('parentIdFSS', this.folderId);
		formData.append('tags', this.tags);
		formData.append('file', this.file);

		req.send(formData);   
	}
  #6 (permalink)  
Antiguo 20/06/2012, 10:11
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: XMLHttpRequest evento subida completa

req.onreadystatechange=function()
{
if(req.readyState==3){
alert(req.readyState);
}
}

Comprueba que en ambas ejecuciones el valor de readyState sea efectivamente 3, si no, habremos de llamar a Iker Jimenez.

Y revisa this.uploadComplete y demás elementos a los que añades un listener.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #7 (permalink)  
Antiguo 20/06/2012, 10:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: XMLHttpRequest evento subida completa

Hola:

¡No estarás usando librerías que simulen sin darte cuenta el send!... al menos no veo la cabecera post para adjuntar ficheros (multipart/form-data)...

Ten cuidado que si nuevas versiones de navegadores lo permiten (lo dudo) supongo que no se estandarizará en algún tiempo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 20/06/2012, 10:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: XMLHttpRequest evento subida completa

Pues sigue ocurriendo lo mismo, saltan los dos eventos a la vez... En this.uploadComplete simplemente compruebo que el readyState sea 4, y elimino la barra de progreso y añado un nodo al DOM...

Tendremos que llamaer a Iker Jimenez entonces... xD
  #9 (permalink)  
Antiguo 20/06/2012, 11:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: XMLHttpRequest evento subida completa

Ups, no había visto tu último mensaje... No se a qué te refieres con que simules el send (o mas bien no se en qué podria influir).. pero no, el send se hace cuando arrastro un fichero al navegador y nada más...

Gracias por la recomendacion!!
  #10 (permalink)  
Antiguo 20/06/2012, 11:28
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: XMLHttpRequest evento subida completa

Si pongo ese header no fuciona :(

Etiquetas: ajax, completa, evento, subida, xmlhttprequest
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 11:41.