Afficher les données d'une API via les options d'un select en Javascript

RohAias Messages postés 1 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous, j'espère que vous allez bien.

Dans mon html j'ai une balise select dont les options sont des données récupéré d'une API avec mon javascript. Pour l'instant pas de soucis. voici le html :
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>testapp</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
  <section class="container">
    <div class="item" id="select">
      <p>list from line 8</p>
      <select id="subwaylist"></select>
      <input type="submit" value="show informations" onclick="return Validate()" />
    </div>
    <div class="item" id="results">
      <p class="text">Résultats : </p>
    </div>
    <script src="main.js"></script>
  </body>
</html>


Et voici le javascript :
var apiStations = "https://api-ratp.pierre-grimaud.fr/v4/stations/metros/8";
var apiHorairesA = "https://api-ratp.pierre-grimaud.fr/v4/schedules/metros/8/balard/A"
 
function req1(){
  fetch(apiStations, {
    method: "get"
  })
  .then(response => response.json())
  .then(data => {
    let allstations = data.result.stations;
    let html = '';
    for (var i = 0; i < allstations.length; i++) {
      html += "<option value=" + allstations[i].slug + ">" + allstations[i].name + "</option>"
    }
    document.getElementById("subwaylist").innerHTML = html;
  })
}
req1();

Ici : api-ratp.pierre-grimaud.fr/v4/schedules/metros/8/balard/A+R il affichera le temps d'arrivée du métro ainsi que sa destination (dans ce cas, nous partons de la station Balard). J'aimerais savoir comment récupérer ces informations pour chaque station que je choisis avec mon select et les mettre dans ma div de résultat.

Je vous remercie d'avance pour vos conseils.

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    Il faut que tu mettes un listener (change) sur ton select
    Et, en fonction de la valeur selectionnée, modifier l'url de la seconde api
      
    const subwaylist = document.getElementById("subwaylist");
    // Fonction pour charger les horaires
    
    un truc du genre :
    function getHoraires(){
      var choix =  subwaylist.value;
      var apiHorairesA = "https://api-ratp.pierre-grimaud.fr/v4/schedules/metros/8/"+choix+"/A"
      fetch(apiHorairesA, {
        method: "get"
      })
      .then(response => response.json())
      .then(data => {
        //ici tu code l'affichage des horaires...
      })
    }
    
    // Ajouter un écouteur d'évènements à subwaylist
    subwaylist.addEventListener("change", getHoraires, false);
     

    0