2010-05-20 20 views
10

C'è un modo per verificare se c'è una richiesta di jax in corso? Qualcosa di simile:Richiesta Ajax in corso jQuery

if ($.ajax.inProgress){ do this; } else { do that; } 

risposta

6

Si dovrebbe fondamentalmente impostare una variabile sulla parte superiore dello script insieme a false e ajax dell'iniziato impostarlo true e nel gestore success impostarlo su false nuovo come described here.

+2

A volte le migliori soluzioni sono le più semplici :) Grazie! – bah

+0

@bah: siete i benvenuti e d'accordo :) – Sarfraz

+0

Ciao! Sto testando una pagina Web e vorrei sapere come farò a sapere quando la richiesta Ajax è completa utilizzando uno script Java (cioè non ho il controllo della pagina Web, posso semplicemente inserire uno script Java)? –

1

Se si ha il pieno controllo del codice javascript, è possibile incrementare una variabile ogni volta che si avvia una richiesta Ajax e la si decrementa al completamento della richiesta (con esito positivo, errore o timeout). In questo modo sai sempre se c'è una richiesta in corso.

10

sì, c'è

 

$.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') 
    } 
}); 
 


il beforeSend farà il processo è necessario fare quando la richiesta Ajax è appena iniziata e completa sarete chiamati quando la richiesta Ajax è completa.
documentation

+0

Non penso che questo risponda alla domanda dell'OP. Non vuole sapere come licenziare i gestori prima di inviare la richiesta o dopo che la richiesta è stata completata, vuole licenziare determinati eventi quando una richiesta è * in corso * ... – SexyBeast

4

segnalarti questo:

$(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

Per interrompere richiesta AJAX, Usa

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

Per continuare l'esecuzione richiesta AJAX, Usa

if($.active > 0){ 
return; 

} 
+0

Non riesco a trovare alcuna documentazione riguardante $ .active. Puoi mostrare qualche esempio per applicare questa funzione? –

+0

@Ganesh, dai un'occhiata a questi post: http://stackoverflow.com/questions/3148225/jquery-active-function. – StartCoding

Problemi correlati