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

problema con div y loading

Estas en el tema de problema con div y loading en el foro de Frameworks JS en Foros del Web. Lo que pasa es que estoy tratabdo de hacer un loading tipo forosdelweb cuando respondes un tema., al enviar el formulario mi¡uestra el cargando pero ...
  #1 (permalink)  
Antiguo 10/10/2006, 18:41
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
problema con div y loading

Lo que pasa es que estoy tratabdo de hacer un loading tipo forosdelweb cuando respondes un tema., al enviar el formulario mi¡uestra el cargando pero luego de eso en vez de cargar el archivo en el div me hace algo como un F5

Codigo ajax:

Código:
var XMLHttpRequestObject = false;

if (window.XMLHttpRequest) 
{
   XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
        XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function pedirDatos(fuenteDatos, divID)
{
        if(XMLHttpRequestObject) 
		{	

		   //Si es llamado del Registro de Newslleter	
		   if (divID=="newslleter")
			   {		
			   var txtnombre = document.getElementById('tx_nombre');
			   var txtemail = document.getElementById('tx_mail');
			   }
		   //Si es llamado del Formulario de Contacto	
		   if (divID=="form")
			   {			   		
			   var txtrut	 	 = document.getElementById('tx_rut');
			   var txtnombres 	 = document.getElementById('tx_nombres');
			   var txtapellidos	 = document.getElementById('tx_apellidos');
			   var txtdireccion  = document.getElementById('tx_direccion');
			   var slsector		 = document.getElementById('sl_sector');			   
			   
			   var txtemail 	 = document.getElementById('tx_email');
			   var txttelefono 	 = document.getElementById('tx_telefono');			   			   			   			   
			   var txtfax    	 = document.getElementById('tx_fax');			   			   			   			   		   
			   
			   var sltippat		 = document.getElementById('sl_tippat');
			   var txtubipat   	 = document.getElementById('tx_ubipat');
			   var txtpatente  	 = document.getElementById('tx_patente');
			   var txtobs	  	 = document.getElementById('tx_obs');
			   			   			   			   
			   var txtcopia		 = document.getElementById('tx_copia');
			   var txtnewslleter = document.getElementById('tx_newslleter');			   
			   var txtcargado	 = document.getElementById('tx_cargado');
			   }

		   var obj = document.getElementById(divID);
		   obj = document.getElementById(divID);  		   

		   XMLHttpRequestObject.open("POST", fuenteDatos);
		  		
		   XMLHttpRequestObject.onreadystatechange = function()
		   {
				   if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) 
				   {												
						obj.innerHTML = XMLHttpRequestObject.responseText;
				   }else{
				   		var loading = document.getElementById('cargando');
						loading = document.getElementById('cargando');  
					    loading.innerHTML = '<img src="img/gif/gl-loadingchico.gif" align="absmiddle"/> Validando Formulario...';          
				   }
		   }
		   //Si es llamado del Registro de Newslleter	
		   if (divID=="newslleter")
			   {
		   		XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		   		XMLHttpRequestObject.send("txtnombre="+txtnombre.value+"&txtemail="+txtemail.value);
				}
			if (divID=="form")
				{
		   		XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		   		XMLHttpRequestObject.send("txtrut="+txtrut.value+"&txtnombres="+txtnombres.value+"&txtapellidos="+txtapellidos.value+"&txtdireccion="+txtdireccion.value+"&slsector="+slsector.value+"&txtemail="+txtemail.value+"&txttelefono="+txttelefono.value+"&txtfax="+txtfax.value+"&sltippat="+sltippat.value+"&txtpatente="+txtpatente.value+"&txtobs="+txtobs.value+"&txtcargado="+txtcargado.value+"&txtcopia="+txtcopia.value+"&txtnewslleter="+txtnewslleter.value);							   			   
				}else{
				XMLHttpRequestObject.send(null);
				}

        } 
}

Codigo html:
Código HTML:
<div id="form">
	<? include ("contacto.php");?>
</div> 
Formulario:

Código HTML:
<form name="formu" method="POST" onsubmit="pedirDatos('contacto.php','form');" >
... blablabal
<form> 
la url del sitio para que puedan ver el funcionamiento es la siguiente:

http://www.munivina.cl/e-munivina/in...=frm_precarios

Se supone que si ponen el rut y el nombre y envian la solicitud deberia volver a traer los datos...(es para probar solamente)
  #2 (permalink)  
Antiguo 11/10/2006, 07:27
Avatar de capa  
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 18 años, 1 mes
Puntos: 1
no lo eh probado, pero a simple vista me parece que antes tienes que crear el objeto readyState con la condicion = 1, en tu script.

readyState == 1: "Loading", se esta cargando los datos.
readyState == 4: "Complete", se ha cargado completamente

el cambio seria este:

Código HTML:
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
	obj.innerHTML = XMLHttpRequestObject.responseText;
}else{
	var loading = document.getElementById('cargando');
	loading = document.getElementById('cargando');
	loading.innerHTML = '<img src="img/gif/gl-loadingchico.gif" align="absmiddle"/> Validando Formulario...';
}
por este:
Código HTML:
if (XMLHttpRequestObject.readyState == 1) {
	var loading = document.getElementById('cargando');
	loading.innerHTML = '<img src="img/gif/gl-loadingchico.gif" align="absmiddle"/> Validando Formulario...';
}

if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
	obj.innerHTML = XMLHttpRequestObject.responseText;
}
suerte..

Última edición por capa; 11/10/2006 a las 09:24
  #3 (permalink)  
Antiguo 11/10/2006, 08:05
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
... ya habia probado eso ..de hecho es lo mismo que esta(solo que con else)... parece que el problema es con XMLHttpRequestObject o no?...
  #4 (permalink)  
Antiguo 11/10/2006, 09:59
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
nadie responde :( ... en tema es que necesito ocupar dos div uno para mostrar el cargando y otro para mostrar el resultado
  #5 (permalink)  
Antiguo 14/10/2006, 07:30
Avatar de ikhuerta  
Fecha de Ingreso: octubre-2006
Mensajes: 104
Antigüedad: 18 años, 1 mes
Puntos: 0
Yo suelo partir el trabajo de ajax en 2 funciones.

La primera se encarga del antes y llama a la segunda en el onreadystatechange --> readyState == 4

es decir. hacemos algo asi:

Código:
function PRIMERA()
{
xhr=crear_objeto_XHR()
xhr(open.... .... ... );
xhr.onreadystatechange=function(){if (XHR[n].readyState==4){	
if (XHR[n].status==200){ SEGUNDA(XHR.responseText;) }}}
// ZONA PARA MARCAR QUE HA EMPEZADO AJAX
document.getElementById("tu_id").innerHTML="QUE ESTOY CARGANDO COÑO!";
// Y LANZAMOS
xhr.send();
}

function SEGUNDA(texto_respuesta)
{
document.getElementById("tu_id_segunda").innerHTML=texto_respuesta;


}

NOTA: todo este codigo está mal escrito, es solo pa que veas la idea.
  #6 (permalink)  
Antiguo 14/10/2006, 13:00
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
.. grcias, .. = ya habia encontrado el problema era un retirn false; al llamar la funcion
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 05:28.