Ho una casella di testo che per ogni volta che un utente immette una lettera eseguo una ricerca con una richiesta Ajax e mostra il risultato "live" per l'utente. Spesso quando un utente digita le lettere richiede più tempo per la richiesta che per l'utente di inserire una nuova lettera, quindi viene fatta una nuova richiesta prima che il primo sia terminato. Sarebbe molto meglio se il primo potesse finire prima di fare la prossima richiesta. C'è un buon modo per fare solo una nuova richiesta se l'ultima richiesta è finita?Richiesta Jjery ajax, attendere l'ultima richiesta di completamento
Questo è il mio codice 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
}
});
}
});
Grazie! Questo era esattamente quello che stavo cercando. Ma per qualche ragione quando digito il mio testo sembra che ogni volta che inserisco una lettera è un po 'buggato e ogni lettera si presenta con una sorta di ritardo. La richiesta Ajax dovrebbe essere inviata asincrona, quindi non dovrebbe influenzare la casella di testo dovrebbe? – Martin
Sarebbe meglio assegnare una funzione con codice cleanup come 'request_in_progress' nell'impostazione' complete' piuttosto che 'success' nel caso in cui la richiesta fallisca. –