Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] Anulowanie requestów
SmokAnalog
post
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Witajcie,

orientujecie się jakie są najlepsze techniki przy anulowaniu requestów Ajaxowych? Już tłumaczę o co chodzi:

Załóżmy, że piszemy skrypt autocomplete dla inputa. Ktoś wpisuje kolejno litery:
  1. K - wysyła się zapytanie o sugestie na K
  2. KO - znów wysyłami, tym razem na KO...
  3. KOT - KOT...


Z oczywistych przyczym każde zdarzenie nie może generować osobnego requestu asynchronicznie, bo mielibyśmy śmietnik. W takim razie jakie są zalecane techniki w takich sytuacjach? Bawiłem się w coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. var xhr = {};
  2.  
  3. $("#field").bind("input", function() {
  4. if(typeof xhr.abort === "function") {
  5. xhr.abort();
  6. }
  7. xhr = $.get(
  8. // parametry requesta
  9. );
  10. });
[JAVASCRIPT] pobierz, plaintext


Działa prawidłowo, ale nie tak szybko jak powinno. Wygląda to tak, jakby metoda .abort() nie działała natychmiastowo. Da się to odczuć w tym przypadku, gdy szybko piszemy w tym polu. Odpowiedź przychodzi o wiele później niż w przypadku powolnego pisania.

Pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. Liczenie ilości wpisanych znaków - request odpalany np. po wpisaniu min. 3 znaków
2. Timeout pomiędzy requestami ustawiony na 200-500 milisekund
3. Po stronie serwera to samo co w pkt.1 i 2

Jeżeli tak bardzo zależy ci na zabijaniu requestów - http://stackoverflow.com/questions/3312960...sending-another

@edit byłeś szybszy ;P

Ten post edytował CuteOne 15.06.2013, 21:18:57
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 06:46