91 votes

Comment savoir si jQuery a une demande Ajax en attente?

Je vais avoir quelques problèmes avec jQuery contrôle que nous avons faites. Supposons que vous avez une liste déroulante qui vous permet d'entrer l'ID de l'élément que vous recherchez, et lorsque vous appuyez sur ENTRÉE ou de perdre le focus dans la zone de texte il valide via jQuery que le code que vous avez saisi est correct, montrant une alerte si elle ne le fait pas.

Le truc, c'est que lorsqu'un utilisateur ordinaire entre une valeur non valide dans il et perd le focus en appuyant sur le bouton envoyer, le jQuery post revient après la soumission du formulaire a été envoyé.

Est-il possible que je peux vérifier si il y a un Async traitement de la demande par jQuery alors que je n'autorise pas les soumettre?

237voto

ShaChris23 Points 7713

$.active renvoie le nombre de requêtes Ajax actives.

Plus d'infos ici

38voto

ceejayoz Points 85962

Vous pouvez utiliser ajaxStart et ajaxStop pour savoir quand les demandes sont actives.

25voto

etgregor Points 111
 $(function () {
        function checkPendingRequest() {
            if ($.active > 0) {
                window.setTimeout(checkPendingRequest, 1000);
                //Mostrar peticiones pendientes ejemplo: $("#control").val("Peticiones pendientes" + $.active);
            }
            else {

                alert("No hay peticiones pendientes");

            }
        };

        window.setTimeout(checkPendingRequest, 1000);

11voto

Toji Points 12442

L' $.ajax() renvoie un objet XMLHttpRequest. La stocker dans une variable qui est accessible à partir du bouton de soumission du "OnClick" de l'événement. Lorsqu'un cliquez sur soumettre est traitée vérifier pour voir si le XMLHttpRequest variable est:

1) la valeur null, ce qui signifie qu'aucune demande n'a été envoyé encore

2) que la readyState valeur est de 4 (Chargé). Cela signifie que la demande a bien été envoyé et retourné avec succès.

Dans chacun de ces cas, le retour de vrai et de permettre à la soumettre à continuer. Sinon, retourne false pour bloquer le présenter et de donner à l'utilisateur une indication de leur soumettre n'a pas fonctionné. :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X