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

Cargar en una capa por partes

Estas en el tema de Cargar en una capa por partes en el foro de Frameworks JS en Foros del Web. Hola, Tengo la típica web dividida en 2 capas con ajax, cuando seleccionamos de la capa1, se carga en la capa2 mediante GET lo que ...
  #1 (permalink)  
Antiguo 09/07/2010, 09:14
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 16 años, 1 mes
Puntos: 1
Cargar en una capa por partes

Hola,

Tengo la típica web dividida en 2 capas con ajax, cuando seleccionamos de la capa1, se carga en la capa2 mediante GET lo que hemos elegido. Hasta aquí bien.

El problema es que a veces la capa2 tarda demasiado en verse porque lo que tiene que cargar es demasiado extenso. Mi pregunta es, ¿cómo puedo hacer para que en la capa2 se vaya cargando por partes o lo que tenga cada 2 segundos que lo coloque, algo así?

El código que tengo actualmente es, que creo que lo vi por aquí:

Código:
function FAjax (url,capa,valores,metodo)
{
   var ajax=creaAjax();
   var capaContenedora = document.getElementById(capa);
   			
/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
	if (metodo.toUpperCase()=='GET'){
		ajax.open ('GET', url, true);
		ajax.onreadystatechange = function() {
			 if (ajax.readyState==1) {
					 capaContenedora.innerHTML="<img src=imagenes/cargando.gif>";
			 }
			 else if (ajax.readyState==4){
				if(ajax.status==200){ 
					 document.getElementById(capa).innerHTML=ajax.responseText; 
				}
				else if(ajax.status==404)
					 {
	
						 capaContenedora.innerHTML = "La direccion existe";
					 }
					 else
					 {
						 capaContenedora.innerHTML = "Error: ".ajax.status;
					 }
			}
		}
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		ajax.send(null);
		return
	}
}
Muchas gracias como siempre!!
  #2 (permalink)  
Antiguo 09/07/2010, 12:57
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Cargar en una capa por partes

Hola

Puedes usar Flush()

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 10/07/2010, 02:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Cargar en una capa por partes

Buenas!

Gracias, lo he estado mirando el flush, pero demasiado complicado. En realidad he aplicado un cambio, en lugar de:

else if (ajax.readyState==4){

He colocado:

else if (ajax.readyState==3){

Así mientras va interactuando, sigo mostrando la imagen de cargando, pero también va mostrando por secuencias lo que va encontrando y no se le hace al usuario pesada la espera.

Luego ya está el:

else if (ajax.readyState==4){

Para que aquí ya sí muestre todo y no muestre el cargando...

Lo dejo por si le resulta útil a alguien con problemas similares.

Gracias!
  #4 (permalink)  
Antiguo 10/07/2010, 04:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Cargar en una capa por partes

Hola

Si te ha solucionado el problema, imprimir texto parcial, entonces el archivo que hay que cargar no es tan grande. Si realmente fuese grande, tendrías que usar la función o método Flush(). Solo habría que tener dos cosas en cuenta antes de usarlo. Solo se cargará datos cuando se encuentre el cierre de una etiqueta HTML, por ejemplo si queremos recibir el contenido de una tabla, no se enviará ningún parcial hasta que se encuentre la etiqueta de cierre de esa tabla. Además en ASP el buffer debe de ser True

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: ajax, partes, capas
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 10:10.