2010-06-18 4 views
0

J'ai une page quand, si l'utilisateur est près du bas de la page, charge la page suivante.jQuery.ajax vérifier s'il y a déjà un autre xhr

Je viens de passer à jQuery, et maintenant j'utilise la fonction jQuery.ajax() pour obtenir les données. Cependant, maintenant je ne peux pas vérifier si le xhr est déjà en train de charger, ce qui fait que la page charge plusieurs xhrs lorsque l'utilisateur approche du bas.

Mon auditeur est:

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

Fondamentalement, vous pouvez suivre le readyState de l'appel dans une portée mondiale?

Répondre

1

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

var scrolling = 0; 

Lorsque vient le temps d'appeler la fonction ajax, vérifiez si le défilement est égal à 0 et par ailleurs ne rien faire; si elle est égale, mettez-la à 1, appelez la fonction ajax et remettez-la à 0 dans le rappel de cette dernière. 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 (bonne chose aussi car javascript ne les a pas ;-) parce que votre fil de contrôle est seulement interrompu lorsque vous appelez la fonction ajax, pas à des endroits arbitraires dans votre code comme dans le multithreading préemptif.

1

peut-être vérifier .ajaxStart() et .ajaxStop() pour les événements qui vous informera lorsque les appels sont en cours?

Questions connexes