2011-07-07 21 views
6

¿Puede alguien ayudarme a entender por qué esto no funciona? El archivo loading.gif aparece mientras ajax .load carga la página, pero nunca desaparece. Esto me lleva a creer que ni las funciones .ajaxStart ni .ajaxStop se están llamando (porque tampoco lo está ocultando inicialmente)..ajaxStart y .ajaxStop no dispara

TIA!

El css:

#loadingDiv { 
background-image: url('images/loading.gif'); 
height: 32px; 
width: 32px; 
margin: 50px auto 50px auto; } 

El jQuery:

<script type="text/javascript"> 
     $(document).ready(function() 
      { 
       $('#loadingDiv') 
        .hide() 
        .ajaxStart(function() { 
         $(this).show(); 
        }) 
        .ajaxStop(function() { 
         $(this).hide(); 
        }) 
       ; 
       $("#results").load("i/getAllInfo.class.php"); return false; 
      }; 
    </script> 

Respuesta

2

que no necesita volver falsa de la función de lista de documentos pero sí es necesario añadir el paréntesis de cierre) como esto

 $("#results").load("i/getAllInfo.class.php"); return false; 
}); //<----- you need the) 

su URL " i/getAllInfo.class.php "se ve mal.

Intente comentar $ (this) .hide() en el .ajaxStop() así:

.ajaxStop(function() { 
    //$(this).hide(); 
}) 

Debido a su posible para que pueda mostrar para tan poco tiempo que no lo verá.

heres un violín para usted: http://jsfiddle.net/GrsRT/11/

+0

Está trabajando ahora. Por alguna razón, me resulta difícil asegurarme de haber cerrado todos los paréntesis y las llaves. ¡Muchas gracias! –

3

No cadena a loadingDiv.

Tal vez puedas probar:

$.ajaxStart(function() { 
    $('#loadingDiv').show(); 
}); 

$.ajaxStop(function() { 
    $('#loadingDiv').hide(); 
}); 
6

Sé que esto es una vieja pregunta, pero yo fijo mi propia aparición de este problema, así que estoy publicar mi solución: Básicamente, comprobar su JavaScript excepciones o de sintaxis errores

De los comentarios, parece que su problema fue causado por un error de sintaxis. Para mí, tuve una excepción en mi controlador ajaxSuccess, que impedía que ajaxStop disparara. Entonces, ajaxStart no se activará en las siguientes llamadas ajax porque ajaxStart solo se activa en la primera llamada ajax de un lote. jQuery nunca recibió un ajaxStop, por lo que pensó que el lote aún se estaba ejecutando.

+1

Excatly. Una excepción en el callcack de éxito impidió que mi ajaxStop disparara. –

Cuestiones relacionadas