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

Duda OnReadyStateChange

Estas en el tema de Duda OnReadyStateChange en el foro de Frameworks JS en Foros del Web. Saludos. Tengo un pequeño dilema con esto, y es que tengo una funcion para hacer Busqueda con Ajax, un pequeño AutoCompletador o Sugerencias de Busqueda. ...
  #1 (permalink)  
Antiguo 12/10/2007, 11:16
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Duda OnReadyStateChange

Saludos. Tengo un pequeño dilema con esto, y es que tengo una funcion para hacer Busqueda con Ajax, un pequeño AutoCompletador o Sugerencias de Busqueda. Ahora bien, digamos que ya casi esta listo, pero tengo un problema, en mi PHP tengo un sleep de 5 segundos, para poder ver el famoso "Loading..." pero cuando hace la consulta, se bloquea mi browser, hasta que pasan los 5 segundos. ¿Exactamente adonde debería cambiar el display para que se me mostrara el "Loading.."?

La variable qu utilizo para el Loading es LoadingWait.

Código:
	function Search(idin,results,url,wait){
		inputSearch = document.getElementById(idin);
		DivResultto = document.getElementById(results);
		LoadingWait = document.getElementById(wait);
				
		if(inputSearch.value != '' && inputSearch.value.length > 1){
			ajax = objetoAjax();
			ajax.onreadystatechange=function() {
				if(ajax.readyState == 4){
					DivResultto.innerHTML 	  = ajax.responseText;
					LoadingWait.style.display = 'none';
					DivResultto.style.display = '';
				}
				else{
					LoadingWait.style.display = '';
					DivResultto.style.display = 'none';
				}

			}
			ajax.open("GET", url+inputSearch.value);
			ajax.send(null);
		}
		else{
			return false;
		}
	}
Y a tal función la llamo así:

Código HTML:
<form>
	<input type="text" onkeyup="Search(this.id, 'u', 'php/bgproc.php?searchid=', 'indicator1');" name="page" id="v" value="" />
	<span id="indicator1" style="display:none;"><img style="display: inline;" src="img/loader.gif" /></span>
</form>
<div id="u" class="autocomplete"></div> 
Nose si estaria bien esto, espero sus comentarios.

Saludos.
  #2 (permalink)  
Antiguo 16/10/2007, 19:24
 
Fecha de Ingreso: octubre-2007
Ubicación: Lima - Peru XD
Mensajes: 17
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Duda OnReadyStateChange

tambien estoy probando Ajax (soy principiante);

Creo tu server responde muy rapido ! y de seguro no te da tiempo para mostrar el "loading.." creo q no es bueno usar un sleep (por el server!)..

y si cambias

-------------------------------------------------------------------------

ajax.onreadystatechange=function() {

if(ajax.readyState == 4){
DivResultto.innerHTML = ajax.responseText;
LoadingWait.style.display = 'none';
DivResultto.style.display = '';
}else{
LoadingWait.style.display = "<img src='img/loadinng.gif' >Loading...";
}


}

--------------------------------------

no estoy seguro derrepnete funcione!

Suerte ...
  #3 (permalink)  
Antiguo 17/10/2007, 21:47
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Duda OnReadyStateChange

loading.............


Debería quedar así.
Código PHP:
function Search(idin,results,url,wait){
        var 
inputSearch document.getElementById(idin);
        var 
DivResultto document.getElementById(results);
        var 
LoadingWait document.getElementById(wait);
                
        if(
inputSearch.value != '' && inputSearch.value.length 1){
            
ajax objetoAjax();
            
ajax.onreadystatechange=function() {
                if(
ajax.readyState == 4){
                    
DivResultto.innerHTML       ajax.responseText;
                    
LoadingWait.style.display 'none';
                    
DivResultto.style.display '';
                }
            }
            
LoadingWait.style.display '';
            
DivResultto.style.display 'none';
            
ajax.open("GET"url+inputSearch.value);
            
ajax.send(null);
        }
        else{
            return 
false;
        }
    } 
Antes del open. y si crees que aun así es muy rápido.

Código PHP:
function Search(idin,results,url,wait){
        var 
inputSearch document.getElementById(idin);
        var 
DivResultto document.getElementById(results);
        var 
LoadingWait document.getElementById(wait);
                
        if(
inputSearch.value != '' && inputSearch.value.length 1){
            
ajax objetoAjax();
            
ajax.onreadystatechange=function() {
                if(
ajax.readyState == 4){
                                 
setTimeout(function(){
                    
DivResultto.innerHTML       ajax.responseText;
                    
LoadingWait.style.display 'none';
                    
DivResultto.style.display '';
                                  },
5000);
                }
            }
            
LoadingWait.style.display '';
            
DivResultto.style.display 'none';
            
ajax.open("GET"url+inputSearch.value);
            
ajax.send(null);
        }
        else{
            return 
false;
        }
    } 

connection closed.
__________________

Maborak Technologies
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 18:25.