jQuery UI Autocomplete: comment avez-vous un processus asynchrone et quitter avant qu'il se termine
-
09-10-2019 - |
Question
J'utilise jQuery UI Autocomplete pour construire une interface de recherche.
Je l'ai défini une fonction personnalisée qui les retours les automatiquement clés résultats de la recherche et les mises à jour sont pressés cependant parfois cette fonction personnalisée ne se termine pas avant la prochaine touche est pressée (ie son traitement encore « Wash » quand je l'ai déjà écrit "Washi" (sur le chemin de l'écriture "Washington").
Je voudrais tout appel à l'événement autocomplete « source » pour annuler la fonction précédente (Wash) et commencer la nouvelle fonction (Washi). Avec la fonction suivante annulation de l'appel (Washi) et la fonction de démarrage (Washin) et ainsi de suite.
Comment est ce genre de chose fait?
La solution
Vous devriez être en mesure de faire quelque chose comme ceci:
var lastXhr;
$( "#myAutocomplete" ).autocomplete({
source: function( request, response ) {
if (lastXhr) lastXhr.abort();
lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
if ( xhr === lastXhr ) {
response( data );
}
});
}
});
les magasins var lastXhr
la demande de plus XHR actuelle. S'il y a un jeu et la fonction source est appelée alors il annule la demande lastXhr et fait une nouvelle. Au retour de la demande ajax si assurez-vous qu'il correspond à la lastXhr, sinon il ne remet pas la fonction response()
.