np. W formularzu wyszukiwania, gdy użytkownik wprowadzi jakiś tekst, w tym czasie żądanie AJAX powinno wysyłać na każde zdarzenie kluczowania, a klucz wyszukiwania jako ciąg zapytania. Klucz wyszukiwania będzie wartością z pola wprowadzania.Jak uniknąć narzutu ciągłego żądania ajax na zdarzenie keyup?
Jeśli użytkownik wpisze „ABCD”, w tym przypadku 3 pierwsze żądanie AJAX powinno się zabić/anulować, bo w 4. żądanie AJAX poszukiwanyklucz będzie „ABCD”
$(document).ready(function(){
$("#searchInput").keyup(function(){
ajaxSearch($("#searchInput").val());
});
});
Na keyup razie wzywam po " Funkcja ajaxSearch() ".
function ajaxSearch(searchKey) {
$.ajax({
type: "get",
url: "http://example.com/ajaxRequestHandler/",
data: "action=search&searchkey=" + searchKey
}).done(function() {
/* process response */
});
}
To działałoby, ale biorąc pod uwagę, czy serwer potrzebuje 5 sekund na zwrócenie danych, w ciągu tych 5 sekund można przetwarzać żądania 5000/300 w zależności od opóźnienia klawisza, co spowodowałoby rodzaje problemów, jeśli nie są właściwie obsługiwane. Potrzebujesz więc sposobu na przerwanie poprzedniego żądania, gdy zostanie wywołane inne zdarzenie keyup. – Mindless