Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JQUERY] Jeśli odpowiedź trwa dłużej niż 2 sekundy
Forum PHP.pl > Forum > Przedszkole
ZenekN
Witam w jaki sposób rozwiązać taki problem.

Jeśli odpowiedź trwa dłużej niż 2 sekundy wyświetl alert
trueblue
Za pomocą dokumentacji.
http://api.jquery.com/jquery.ajax/ właściwość timeout.
kayman
alert na setTimeout i jak wróci wcześniej niż 2s to resetujesz przez clearTimeout
ZenekN
Próbuje to jakoś ogarnąć i nie daje rady

jeśli dostaje fail w ajaxie to już nie dostaje done
viking
https://api.jquery.com/deferred.always/
ZenekN
nie dostaje w
Cytat
.always
parametru data

  1. .done(function (data) {
  2. $('.body-top').show();
  3. $('.body-top').html(data);
  4.  
  5. }).fail(function (xhr, statusText) {
  6. $('.body-top').show();
  7. $('.body-top').html('<div style="text-align:center;"><img src="http://strona.pl/img/loading.gif"></div>');
  8.  
  9. }).always(function(data) {
  10. $('.body-top').show();
  11. $('.body-top').html(data);
  12. });
viking
Więc pewnie żądanie jest fail. Czytałeś w dokumentacji co zwraca?
ZenekN
na allegro jest tak że jeśli pierwszy raz kliknę w produkt to pokaże się preloader a potem strona, natomiast jeśli jeszcze raz szybko przeładuję stronę, załaduje się strona bez preloadera, jeśli chwile odczekam i przeładuje ponownie pokaże się preloader a potem zawartość strony.

@viking, zrobiłem to inaczej, po prostu wysłałem ponownie $.post w fail poprzedzone timeout oneeyedsmiley02.png

  1. timeout: 1000
  2. ....
  3.  
  4. .done(function (data) {
  5. $('.body-top').show();
  6. $('.body-top').html(data);
  7.  
  8. }).fail(function (xhr, statusText) {
  9. $('.body-top').show();
  10. $('.body-top').html('<div style="text-align:center;"><img src="http://strona.pl/img/loading.gif"></div>');
  11.  
  12. $.post();
  13.  
  14. })


dzięki za naprowadzenie
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.