Définit une liste / menu de commandes
Créer et générer une liste déroulante de pays, d'état et de ville avec l'API REST de la solution Geodata et jQuery
Utiliser l' API REST de la solution Geodata pour obtenir des données et c'est un plugin très simple et facile à utiliser, ajoutez simplement du HTML dans votre projet existant et profitez-en
Pour Créer et générer une liste déroulante de pays, d'état et de ville avec l'API REST de la solution Geodata et jQuery
Souvent nous avons rencontré ces trois lettres et plusieurs d’entre nous ne savent pas ce que (API) signifie . C’est pour quoi j’ai décidé d’écrire ce cours dans le quel nous allons apprendre qu’est ce qu'une API et comment et quand utiliser une API. Avec des exemples.
API est l’acronyme anglais qui signifie « Application Programming Interface », que l’on traduit en français par interface de programmation d'application.
Une API est l’ensemble de méthode, de définitions, de fonction et de protocoles prédéfinit qui facilite la création et l'intégration de logiciels et d'applications.
Une API est un logiciel intermédiaire qui permet à deux applications de communiquer entre eux. Chaque fois que vous utilisez une application comme instagame ou facebook entre autres, que vous envoyez un message instantané ou que vous vérifiez la météo sur votre téléphone, vous utilisez une API.
Imaginez que vous êtes au restaurant vous avez le menus devant vous ,vous avez fait votre choix, alors il faut envoyer votre commande à la cuisine (le système) pour la préparer et vous la renvoyer , c’est là qu’intervient le serveur (API)
Voici quelques exemples d’API que nous utilisons dans notre vie quotidienne
Vous avez peut-être déjà essayé de réserver en ligne un ticket de voyage.
Tout comme le restaurant, vous avez un formulaire vous permettant de choisir entre plusieurs options, différentes villes, dates de départ et de retour, et plus encore.
Supposons que vous réserviez votre ticket sur le site Web d’une compagnie de voyage.
Vous choisissez :
Une ville et une date de départ
Une ville et une date de retour
Et aussi d’autres variables.
Pour réserver votre ticket, vous interagissez avec le site Web de la compagnie pour accéder à leur base de données et voir si des places sont disponibles à la dates voulue et quels pourraient être les prix.
Mais, que va-t-il se passer si vous n’utilisez pas le site Web de la compagnie, qui vous donne un accès direct à l’information?
Que se passe-t-il si vous utilisez un service de voyage en ligne, qui regroupe des informations provenant d’un certain nombre de bases de données de compagnies différentes?
Dans ce cas, vous allez interagir avec l’API de la compagnie que vous désirez.
L’API est l’interface de ce service de voyage en ligne qui vous permettra d’obtenir des informations de la base de données de la compagnie désirée pour réserver des sièges, choisir les options de bagages, etc.
L’API prend ensuite la réponse de la compagnie aérienne à votre demande et la renvoie directement au service de voyage en ligne, qui vous montre ensuite les informations les plus à jour et les plus pertinentes. l’API prend certaines caractéristiques qui la rendent précieux et utiles:
Nous allons voir un autre exemple d’utilisation des API.
Supposons que vous voulez créer un formulaire où l’utilisateur doit choisir le pays, l’état et la ville comme le montre l'image suivante:
Il faut avoir une base de données pour répertorier tous les payées, les états et les villes du monde !!!
C’est un travail énorme n’est ce pas ?
Heureusement, la solution Geodata nous a simplifier le travail grâce à son API REST Geodata .
Cet API va nous permettre de communiquer avec la base de données de Google.
Donc nous allons utiliser cette API dont voici l'URL :
https://geodata.solutions/api/api.php
et voici le code JavaScript qui va extraire les données de la base distante.
Code JavaScript
Ce code est une fonction JavaScript qui utilise AJAX pour effectuer des appels à une API de géolocalisation. Il crée un objet "ajaxCall" avec une méthode "send" qui envoie une requête au serveur avec des paramètres spécifiques. Les autres fonctions dans ce code utilisent cette méthode "send" pour récupérer des informations sur les pays, les états et les villes en fonction des sélections effectuées par l'utilisateur dans des champs de formulaire.
function ajaxCall() { this.send = function(data, url, method, success, type) { type = type||'json'; var successRes = function(data) { success(data); } var errorRes = function(e) { console.log(e); } jQuery.ajax({ url: url, type: method, data: data, success: successRes, error: errorRes, dataType: type, timeout: 60000 }); } } function locationInfo() { var rootUrl = "https://geodata.solutions/api/api.php"; var addParams = ''; if(jQuery("#gds_appid").length > 0) { addParams += '&appid=' + jQuery("#gds_appid").val(); } if(jQuery("#gds_hash").length > 0) { addParams += '&hash=' + jQuery("#gds_hash").val(); } var call = new ajaxCall(); this.confCity = function(id) { var url = rootUrl+'?type=confCity&countryId='+ jQuery('#idPays option:selected').attr('countryId') +'&stateId=' + jQuery('#idEtat option:selected').attr('stateid') + '&cityId=' + id; var method = "post"; var data = {}; call.send(data, url, method, function(data) { if(data){ } else{ } }); }; this.getCities = function(id) { jQuery(".ville option:gt(0)").remove(); var stateClasses = jQuery('#idVille').attr('class'); var cC = stateClasses.split(" "); cC.shift(); var addClasses = ''; if(cC.length > 0) { acC = cC.join(); addClasses = '&addClasses=' + encodeURIComponent(acC); } var url = rootUrl+'?type=getCities&countryId='+ jQuery('#idPays option:selected').attr('countryId') +'&stateId=' + id + addParams + addClasses; var method = "post"; var data = {}; jQuery('.ville').find("option:eq(0)").html("Please wait.."); call.send(data, url, method, function(data) { jQuery('.ville').find("option:eq(0)").html("Sélectionner la ville"); if(data.tp == 1){ var listlen = Object.keys(data['result']).length; if(listlen > 0) { jQuery.each(data['result'], function(key, val) { var option = jQuery('<option>'); option.attr('value', val).text(val); jQuery('.ville').append(option); }); } else { var usestate = jQuery('#idEtat option:selected').val(); var option = jQuery('<option>'); option.attr('value', usestate).text(usestate); option.attr('selected', 'selected'); jQuery('.ville').append(option); } jQuery(".ville").prop("disabled",false); } else{ alert(data.msg); } }); }; this.getStates = function(id) { jQuery(".etat option:gt(0)").remove(); jQuery(".ville option:gt(0)").remove(); var stateClasses = jQuery('#idEtat').attr('class'); var cC = stateClasses.split(" "); cC.shift(); var addClasses = ''; if(cC.length > 0) { acC = cC.join(); addClasses = '&addClasses=' + encodeURIComponent(acC); } var url = rootUrl+'?type=getStates&countryId=' + id + addParams + addClasses; var method = "post"; var data = {}; jQuery('.etat').find("option:eq(0)").html("Please wait.."); call.send(data, url, method, function(data) { jQuery('.etat').find("option:eq(0)").html("Sélectionner l'état ou la province"); if(data.tp == 1){ jQuery.each(data['result'], function(key, val) { var option = jQuery('<option>'); option.attr('value', val).text(val); option.attr('stateid', key); jQuery('.etat').append(option); }); jQuery(".etat").prop("disabled",false); } else{ alert(data.msg); } }); }; this.getCountries = function() { var countryClasses = jQuery('#idPays').attr('class'); var cC = countryClasses.split(" "); cC.shift(); var addClasses = ''; if(cC.length > 0) { acC = cC.join(); addClasses = '&addClasses=' + encodeURIComponent(acC); } var presel = false; var iip = 'N'; jQuery.each(cC, function( index, value ) { if (value.match("^presel-")) { presel = value.substring(7); } if(value.match("^presel-byi")) { var iip = 'Y'; } }); var url = rootUrl+'?type=getCountries' + addParams + addClasses; var method = "post"; var data = {}; jQuery('.pays').find("option:eq(0)").html("Please wait.."); call.send(data, url, method, function(data) { jQuery('.pays').find("option:eq(0)").html("Sélectionnez le pays"); if(data.tp == 1){ if(presel == 'byip') { presel = data['presel']; console.log('2 presel is set as ' + presel); } if(jQuery.inArray("group-continents",cC) > -1) { var $select = jQuery('.pays'); console.log(data['result']); jQuery.each(data['result'], function(i, optgroups) { var $optgroup = jQuery("<optgroup>", {label: i}); if(optgroups.length > 0) { $optgroup.appendTo($select); } jQuery.each(optgroups, function(groupName, options) { var coption = jQuery('<option>'); coption.attr('value', options.name).text(options.name); coption.attr('countryId', options.id); if(presel) { if (presel.toUpperCase() == options.id) { coption.attr('selected', 'selected'); } } coption.appendTo($optgroup); }); }); } else { jQuery.each(data['result'], function(key, val) { var option = jQuery('<option>'); option.attr('value', val).text(val); option.attr('countryId', key); if(presel) { if(presel.toUpperCase() == key) { option.attr('selected', 'selected'); } } jQuery('.pays').append(option); }); } if(presel) { jQuery('.pays').trigger('change'); } jQuery(".pays").prop("disabled",false); } else{ alert(data.msg); } }); }; } jQuery(function() { var loc = new locationInfo(); loc.getCountries(); jQuery(".pays").on("change", function(ev) { var countryId = jQuery("option:selected", this).attr('countryId'); if(countryId != ''){ loc.getStates(countryId); } else{ jQuery(".etat option:gt(0)").remove(); } }); jQuery(".etat").on("change", function(ev) { var stateId = jQuery("option:selected", this).attr('stateid'); if(stateId != ''){ loc.getCities(stateId); } else{ jQuery(".ville option:gt(0)").remove(); } }); jQuery(".ville").on("change", function(ev) { var cityId = jQuery("option:selected", this).val(); if(cityId != ''){ loc.confCity(cityId); } }); });.
Ce code JavaScript est une implémentation qui génère un système de sélection de localisation à l'aide d'appels AJAX pour récupérer des données géographiques à partir d'une API tiers. Voici une explication détaillée du fonctionnement du code :
En résumé, ce code utilise des appels AJAX pour récupérer des données géographiques à partir d'une API tierce en fonction des sélections de l'utilisateur dans des menus déroulants (pays, états, villes) et effectue des actions en réponse à ces sélections.
Code HTML
Et voici le code HTML à insérer dans votre page web :
<!doctype html>; <html lang="fr">;<head>; <title>;Comment faire une liste déroulante de pays, d'état et de ville avec l'API REST et jQuery | oujood.com</title>; <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />; <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">;</script>; <script src="js/countrystatecity.js">;</script>; </head>; <body>;<div>; <h2>;Comment créer une liste déroulante de pays, d'état et de ville avec l'API REST et jQuery </h2>; <form action="" method="post">; <div>; <h3>;Pays</h3>; <select name="Pays" class="pays " id="idPays">; <option value="">;Sélectionnez le pays</option>; </select>; <h3>;État</h3>; <select name="etat" class="etat " id="idEtat">; <option value="">;Sélectionner l'état</option>; </select>; <h3>;Ville</h3>; <select name="ville" class="ville " id="idVille">; <option value="">;Sélectionner la ville</option>; </select>; </div>; </form>; </div>; </body>; </html>;
Et comme vous le constater nous avons mis le code javascript précédent dans un fichier ( countrystatecity.js ) lequel est mis dans le dossier (js), puis nous avons inséré ce fichier dans la partie head de notre page comme suit :
<script src="js/countrystatecity.js">;</script>;
Et bien vous devez aussi insérer le script jquery et toujours dans la partie head de votre page comme suit :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">;</script>;
Ce formulaire présente 3 entrées sous forme de listes déroulantes pour saisir Pays, État et Ville, vous devez d'abord sélectionner le pays, et l’API extraira les États pour ce pays, puis sélectionnez un États et l’API extraira les noms de villes pour vous et ainsi vous pouvez sélectionner une ville.
Vous pouvez récupérer les données saisies et en faire ce que vous voulez.
Retour à l'accueil du site
Par carabde 26 aout 2021