0 votes

jQuery.ajax vérifie s'il existe déjà une autre xhr

J'ai une page qui, si l'utilisateur est proche du bas de la page, charge la page suivante.

Je suis récemment passé à jQuery, et j'utilise maintenant la fonction jQuery.ajax() pour obtenir les données. Cependant, maintenant je ne peux pas vérifier si le xhr est déjà en cours de chargement, ce qui fait que la page se charge plusieurs xhrs lorsque l'utilisateur se rapproche du bas.

Mon auditeur est :

$(document).scroll(function () {
            if(/* scrollbar is near bottom */)
            loadxhr(dat++); //function that calls jQuery.ajax()
        }
});

En fait, pouvez-vous suivre le readyState de l'appel dans une portée globale ?

1voto

Alex Martelli Points 330805

Je voudrais juste avoir une variable (en dehors de la fonction)

var scrolling = 0;

Au moment d'appeler la fonction ajax, vérifiez si le défilement est égal à 0 et sinon ne faites rien ; s'il EST égal, mettez-le à 1, appelez la fonction ajax, et remettez-le à 0 dans le rappel de cette dernière.

C'est un peu comme l'équivalent d'un "verrou" dans les systèmes de multithreading préemptif, sauf que vous n'avez pas vraiment besoin d'un verrou ici (c'est une bonne chose puisque javascript n'en a pas;-) car votre fil de contrôle n'est interrompu que lorsque vous appelez la fonction ajax, et non à des endroits arbitraires de votre code comme dans le multithreading préemptif.

1voto

Scott Evernden Points 17858

Peut-être que vous pouvez consulter .ajaxStart() y .ajaxStop() pour des événements qui vous informent lorsque des appels sont en cours ?

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