Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zablokowanie wielokrotnego wysyłania requesta
Forum PHP.pl > Forum > XML, AJAX
MitS
Witam serdecznie,

mam duży problem z jQuery i ajaxem. Otóż mam sobie kawałek kodu:
  1. $.ajax({
  2. url : sUrl,
  3. data : options.ajax.data,
  4. type : 'POST',
  5. dataType : 'html',
  6.  
  7. beforeSend : function(){
  8. // włączenie preloadera
  9. },
  10.  
  11. complete : function(){
  12. // wyłączenie preloadera
  13. },
  14.  
  15. success : function(html){
  16. // jakaś akcja
  17. }
  18. });


wszystko ładnie działa. Akcja wykonuje się po wciśnięciu enter lub nacisnięciu na input myszką.
Fajnie, ale znalazłem błąd polegający na wielokrotnym wysyłaniu requesta zanim pierwszy się skończy np. przytrzymanie klawisza enter lub szybkie nacisnięcie wielokrotnie klawisza myszki na inpucie.

Gdy taką operację przeprowadzę idzię taka ilość requestów jaka zdążyła się wsyłać. Moje pytanie brzmi: Jak zablokować możliwość wysyłania kolejnych requestów nim każdy poprzedni (pierwszy) się nie skończy ?
vokiel
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. async: false,
  3. // reszta Twojego kodu
  4. });
[JAVASCRIPT] pobierz, plaintext
zegarek84
@vokiel - na 99% nie o to chodziło - to blokuje wszystko puki nie otrzyma się odpowiedzi... ja obstawiam za czymś w ten deseń:
[JAVASCRIPT] pobierz, plaintext
  1. var unlocked=true;
  2. function lock(){
  3. unlocked=false;
  4. }
  5. function unlock(){
  6. unlocked=true;
  7. }
  8.  
  9. function doAjax(){
  10. if(!unlocked) return false; // już wysłaliśmy żądanie i jeszcze nie otrzymaliśmy odpowiedzi
  11. $.ajax({
  12. url : sUrl,
  13. data : options.ajax.data,
  14. type : 'POST',
  15. dataType : 'html',
  16.  
  17. beforeSend : function(){
  18. // włączenie preloadera
  19. },
  20.  
  21. complete : function(){
  22. unlock(); // lub bardziej pod success -> otrzymana odpowiedź...
  23. // wyłączenie preloadera
  24. },
  25.  
  26. success : function(html){
  27. // jakaś akcja
  28. }
  29. });
  30. }
  31.  
  32. jakisElement.onclick=doAjax; // eventa podpiąć tak jak się żywnie podoba ;)
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.