IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire une boucle sur une même variable mais avec des valeurs différentes


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Par défaut Faire une boucle sur une même variable mais avec des valeurs différentes
    J'affiche des éléments avec JSON

    Avant de commencer, voici l'ordre que je suis censé avoir: toto-> titi-> tata-> trtr-> tktk-> tztz

    Je dois publier le prochain job à chaque itération, sachant que le premier est toto

    Donc pour l'instant j'ai: toto titi tata

    Et je ne vois pas comment faire la boucle pour voir le reste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    function getall() {
        ajaxGet(".../toto/api/json?pretty=true", recover);
    }
    getall(); 
    function ajaxGet(url, callback) {
        ...
    }
     
    function recover(response){
        var Json = JSON.parse(response);
        var Data = Json.downstreamProjects.map(function(group) {    
                console.log("toto");
                //toto
                console.log(group.name);    
                //titi
                ajaxGet2("..."+group.name+"/api/json?pretty=true", recover2);    
     
            });          
    }
     
    function ajaxGet2(url, callback) {
        ....
    }
     
    function recover2(response){
        var Json = JSON.parse(response);
        var Data = Json.downstreamProjects.map(function(group) {        
                console.log(group.name);
                //tata       
        });       
    }
    Pour info, downstreamproject affiche le prochain job.

    Résultat actuel:
    toto
    titi
    tata

    Ce que je souhaite (avec la boucle):
    toto
    titi
    tata
    trtr
    tktk
    tztz

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Par défaut Réponse null en utilisant une boucle while
    Bonjour,

    Le but de ce script est d'afficher le prochain groupname en sachant que le premier commence par toto.

    C'est la méthode DownStreamproject qui permet d'afficher le prochain groupname.

    Je ne comprends pas pourquoi j'ai null et ce que je dois faire pour régler ce problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    function getall(groupname) {
        console.log(groupname);
        //toto
        ajaxGet(".../" + groupname + "/api/json?pretty=true", recover);
    }
     
    function ajaxGet(url, callback) {
        ...
    }
     
    function recover(response){
        var Json = JSON.parse(response);
        var Data = Json.downstreamProjects.map(function(group) {    
                console.log(group.name);    
                //titi
                // Save in global state
                global.groupname = group.name;
            });          
    }
     
    global.groupname = "toto"; // start
     
    // Assume the chain ends when groupname is null or blank
    while (global.groupname) {
        // Do something with groupname
        // ...
        // reset groupname to exit if ajax call fails
        global.groupname = null;
        // Get next groupname
        getall(global.groupname); 
    }
    Résultat actuel :
    null
    Eroor 404 Not found https://.../null/api

    Résultat souhaité:
    toto titi tata trtr tztz

    Merci pour votre aide

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut Modération
    Bonjour,
    Inutile de multiplier les discussions, merci de rester sur la même discussion en apportant des éléments nouveaux permettant aux intervenants de vous aider efficacement.

    Rappel : Les règles du club.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Par défaut
    Cette fois ci j'ai uniquement toto et titi qui s'affichent

    Je souhaiterais tout le reste mais je ne comprend pas pourquoi cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    global.globalgroupname = "toto"; // start
    let prevgroupname;
     
    // Assume the chain ends when groupname is null or blank
    while (globalgroupname) {
        // Do something with groupname
        // ...
        // reset globalgroupname to exit if ajax call fails
        prevgroupname = globalgroupname;
        globalgroupname = null;
        // Get next globalgroupname
        getall(prevgroupname); 
    }
     
    function getall(groupname) {
        console.log(groupname);
        //toto
        ajaxGet(".../" + groupname + "/api/json?pretty=true", recover);
    }
     
    function ajaxGet(url, callback) {
        ...
    }
     
    function recover(response){
        var Json = JSON.parse(response);
        var Data = Json.downstreamProjects.map(function(group) {    
                console.log(group.name);    
                //titi
                // Save in global state
                globalgroupname = group.name;
            });          
    }

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Le moins que l'on puisse dire est que tu ne nous aides pas avec la non description de ton soucis.

    Il manque plein de précision mais je me lance quand même ...

    Si j'extrapole correctement, ce que tu souhaites c'est faire des requêtes, via Ajax, tant que tu obtiens une réponse JSON contenant un élément name, group.name dans ton code.

    Dans ce cas, si c'est cela, il te faut rappeler la fonction en lui passant la nouvelle valeur.

    Quelque chose dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function getDataAjax(param) {
      var oXhr = new XMLHttpRequest();
      // construction de l'url avec le paramètre
      var url = ".../" + param + "/api/json?pretty=true";
      oXhr.open('GET', url, true);
      oXhr.onload = function() {
        // récup. des données sous forme d'un objet
        var data = JSON.parse(this.responseText);
        if (data.name) {
          // ici tu fais ce qu'il y a à faire
          console.log("retour : ", data.name);
          // rappel avec nouveau paramètre
          getDataAjax(data.name);
        }
      };
      oXhr.send(null);
    }
    // 1st appel
    getDataAjax("toto");
    Enfin peut être bien que oui peut être bien que non !

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Par défaut
    Bonjour,

    Je vous remercie de votre réponse.

    Pour être plus précis, j'ai une requête ajax qui va permettre d'afficher en JSON l'ensemble de son contenu. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajaxGet("https://.../"+toto+"/api/json?pretty=true", recover);
    Le résultat reçu est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    "downstreamProjects" : [
        {
          "_class" : "",
          "name" : "titi",
          "url" : "https://.../titi/",
          "color" : "blue"
        }
      ],

    Donc ce qui m’intéresse c'est le DownStreamProject.name qui équivaut à titi.

    Donc pour l'instant on affiche toto et titi

    Maintenant on refait la même chose avec titi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajaxGet("https://.../"+titi+"/api/json?pretty=true", recover);
    Le résultat reçu est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    "downstreamProjects" : [
        {
          "_class" : "",
          "name" : "tata",
          "url" : "https://.../tata/",
          "color" : "blue"
        }
      ],
    Donc on aura ainsi toto titi tata

    Et on continue la même chose jusqu'à la fin.

    Du coup dans l'url il faut à chaque fois rajouter le nouveau name chose que je n'arrive pas du tout ..

    J'espère avoir été clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/06/2012, 20h40
  2. Réponses: 6
    Dernier message: 07/01/2011, 17h49
  3. Comptage dans la même table mais avec des conditions différentes
    Par V i n c e n t dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/08/2010, 14h12
  4. [Débutant] Tracé sur même figure mais avec des ordonnées différentes
    Par telecofr dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/10/2009, 16h28
  5. Réponses: 3
    Dernier message: 22/02/2008, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo