Mam pole tekstowe, które za każdym razem, gdy użytkownik wprowadza literę, wykonuję wyszukiwanie z prośbą o ajax i pokazuję wynik "na żywo" dla użytkownika. Często, gdy użytkownik wpisuje litery, zajmuje więcej czasu, niż żądanie użytkownika, aby wprowadzić nową literę, a zatem nowe żądanie jest składane przed pierwszym zakończeniem. Byłoby znacznie lepiej, gdyby pierwszy mógł się skończyć, zanim zrobię następną prośbę. Czy istnieje dobry sposób na złożenie nowego wniosku tylko po zakończeniu ostatniego wniosku?Żądanie ajax Jquery, czekaj na najnowszą prośbę, aby zakończyć
To jest mój kod jquery:
$("#MyTextBox").change(function() {
if (this.value.length > 2) {
$.ajax({
type: "GET",
url: "http://www.domain.com/Service.svc/Search?keyword=" + this.value,
dataType: "json",
success: function(data) {
//here I have some code that shows the result for the user
}
});
}
});
Dzięki! Właśnie tego szukałem. Ale z jakiegoś powodu podczas wpisywania tekstu wydaje mi się, że za każdym razem, gdy wpisuję literę, jest trochę powikłana, a każda litera pojawia się z pewnym opóźnieniem. Żądanie ajax należy przesłać asynchronicznie, więc nie powinno to wpłynąć na pole tekstowe, gdyby było? – Martin
Lepiej byłoby przypisać funkcję z kodem czyszczenia, np. 'Request_in_progress' w ustawieniu' complete', zamiast 'success' w przypadku niepowodzenia żądania. –