Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zablokowanie wielokrotnego wysyłania requesta
MitS
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. async: false,
  3. // reszta Twojego kodu
  4. });
[JAVASCRIPT] pobierz, plaintext


--------------------
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


@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


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:18