21-04-2016, 09:01 PM
Ce fut un plaisir
Ton serveur risque de morfler un peu (car une requête AJAX est faite à chaque appuis sur une touche dans le champ de recherche), mais surtout, le texte cherché n'est pas échappé. Bon, tu as assez peu de chances qu'un utilisateur lambda cherche "&poire=pomme" comme aéroport, mais s'il essaie de chercher un aéroport commençant pas "&", il n'en trouvera pas (car l'URL de l'AJAX est "...?valeur=&poire=pomme", aka "valeur" est vide et "poire" vaut "pomme").
Je pense que tu peux arriver au même résultat (champ de recherche véloce et safe) sans passer par une requête AJAX: tu as la liste complète des aéroport dans la page HTML, donc il suffit d'afficher ceux correspondant à la recherche (tu peux le faire, par exemple, en balisant <ul class="aeroports"><li data-name="Lyon Saint-Exupéry">Lyon Saint-Exupéry...</li><li>...</ul> et en cherchant un document.querySelectorAll('.aeroports > li[data-name*=' + this.value + ']'), avec le bon échappement pour this.value).
Mais bon, tu amélioreras ça plus tard.
Ton serveur risque de morfler un peu (car une requête AJAX est faite à chaque appuis sur une touche dans le champ de recherche), mais surtout, le texte cherché n'est pas échappé. Bon, tu as assez peu de chances qu'un utilisateur lambda cherche "&poire=pomme" comme aéroport, mais s'il essaie de chercher un aéroport commençant pas "&", il n'en trouvera pas (car l'URL de l'AJAX est "...?valeur=&poire=pomme", aka "valeur" est vide et "poire" vaut "pomme").
Je pense que tu peux arriver au même résultat (champ de recherche véloce et safe) sans passer par une requête AJAX: tu as la liste complète des aéroport dans la page HTML, donc il suffit d'afficher ceux correspondant à la recherche (tu peux le faire, par exemple, en balisant <ul class="aeroports"><li data-name="Lyon Saint-Exupéry">Lyon Saint-Exupéry...</li><li>...</ul> et en cherchant un document.querySelectorAll('.aeroports > li[data-name*=' + this.value + ']'), avec le bon échappement pour this.value).
Mais bon, tu amélioreras ça plus tard.