2010-05-20 23 views

Respuesta

6

Debe establecer básicamente una variable en la parte superior del guión establecido en false y en ajax iniciado la pusieron a true y en el controlador success la pusieron a false de nuevo como described here.

+2

A veces las mejores soluciones son las más simples :) ¡Gracias! – bah

+0

@bah: De nada y está de acuerdo :) – Sarfraz

+0

¡Hola! Estoy probando una página web y me gustaría saber cómo voy a saber cuándo se completa la solicitud de Ajax utilizando una secuencia de comandos Java (es decir, no tengo control de la página web, solo puedo insertar una secuencia de comandos Java). –

1

Si tiene el control total del código de JavaScript, puede incrementar una variable siempre que inicie una solicitud de Ajax y la disminuya cuando la solicitud finalice (con éxito, error o tiempo de espera). De esta manera siempre sabrá si hay una solicitud en progreso.

10

sí hay

 

$.ajax({ 
    type: 'get', 
    url: 'url', 
    data: { 
       email: $email.val() 
    }, 
    dataType: 'text', 
    success: function(data) 
    { 
     if(data == '1') 
     { 
      $response.attr('style', '') 
        .attr('style', "color:red;") 
        .html('Email already registered please enter a different email.'); 
     } 
     else 
     { 
      $response.attr('style', '') 
        .attr('style', "color:green;") 
        .html('Available'); 
     } 
    }, 
    beforeSend: function(){ 
       $email.addClass('show_loading_in_right') 
    }, 
    complete: function(){ 
       $email.removeClass('show_loading_in_right') 
    } 
}); 
 


la beforeSend hará el proceso que tiene que hacer cuando la petición ajax acaba de comenzar y completa se llamará cuando la solicitud Ajax se ha completado.
documentation

+0

No creo que esto resuelva la pregunta del OP. No quiere saber cómo despedir a los controladores antes de enviar la solicitud o una vez que se completa la solicitud, quiere activar ciertos eventos cuando una solicitud * está en curso * ... – SexyBeast

4

Es posible que como este:

$(document).ready(function() { 
    var working = false; 
    $("#contentLoading").ajaxSend(function(r, s) { 
     $(this).show(); 
     $("#ready").hide(); 
     working = true; 
    }); 

    $("#contentLoading").ajaxStop(function(r, s) { 
     $(this).hide(); 
     $("#ready").show(); 
     working = false; 
    }); 

    $('#form').submit(function() { 
     if (working) return; 
     $.post('/some/url', $(this).serialize(), function(data){ 
      alert(data); 
     }); 
    }); 
}); 
4

Para cancelar petición Ajax, Uso

if($.active > 0){ 
ajx.abort();//where ajx is ajax variable 
} 

continuar ejecutando petición Ajax, Uso

if($.active > 0){ 
return; 

} 
+0

No encuentro ninguna documentación con respecto a $ .active. ¿Puedes mostrar algún ejemplo para aplicar esta función? –

+0

@Ganesh, eche un vistazo a estas publicaciones: http://stackoverflow.com/questions/3148225/jquery-active-function. – StartCoding

Cuestiones relacionadas