J'ai une zone de texte qui chaque fois qu'un utilisateur saisit une lettre, je fais une recherche avec une requête ajax et montre le résultat "live" pour l'utilisateur. Souvent, lorsqu'un utilisateur tape les lettres, il faut plus de temps pour que la demande soit faite que pour l'utilisateur d'entrer une nouvelle lettre, donc une nouvelle demande est faite avant que la première ne soit terminée. Ce serait beaucoup mieux si le premier pouvait se terminer avant de faire la prochaine demande. Existe-t-il un bon moyen de ne faire une nouvelle demande que si la dernière requête est terminée?Jquery demande ajax, attendez la dernière requête pour terminer
Ceci est mon code 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
}
});
}
});
Merci! C'était exactement ce que je cherchais. Mais pour une raison quelconque, lorsque je tape dans mon texte, il semble que chaque fois que j'entre une lettre, c'est un peu buggé et chaque lettre apparaît avec une sorte de retard. La requête ajax doit être envoyée async, cela ne devrait donc pas affecter la zone de texte. – Martin
Il vaudrait mieux assigner une fonction avec un code de nettoyage comme 'request_in_progress' dans le paramètre' complete' plutôt que 'success' si la requête échoue. –