Simple récupération de valeur d'une fonction js [Résolu/Fermé]

Signaler
Messages postés
7
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
18 août 2013
-
Messages postés
7
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
18 août 2013
-
Bonjour,

J'ai un problème qui me parait simple : je cherche à récupérer la valeur name que la fonction get_name() se charge d'aller chercher.
Je ne retourne manifestement donc pas correctement ma valeur.
Mes recherches m'ont jusqu'ici donné plusieurs solutions, mais qui ne m'ont pas encore permis de réussir cette simple récupération de valeur...
Voici mon code, merci beaucoup à vous!

var id = "id=1";
     var name;

      // Récupère le nom en fonction de l'id dans la bdd
      function get_name(){
          $.ajax({
              type: 'POST',
              dataType: 'json',
              url: 'http://path/fichier.php',
              data: id,
              async: false,
              success: function(data){
                    alert (data.name); // affiche bien le nom
                    return data.name;
                  }
              },
              error: function(){
                  alert('Erreur de connexion.');   
              }
          });
      }
      name = get_name();
      alert(name); // affiche 'undefined' 



2 réponses

Messages postés
181
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
10 juin 2014
17
Bonjour,

Oui c'est normal puisque le return data.name; de la fonction est propre à la fonction success() de jquery et non pas à la fonction get_name(); d'ou le retour de la valeur undefined

Je te laisse imaginer comment la récupérer :-)
Messages postés
7
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
18 août 2013

Voici la solution :
 var id = "id=1";
     var name;

      // Récupère le nom en fonction de l'id dans la bdd
      function get_name(){
          $.ajax({
              type: 'POST',
              dataType: 'json',
              url: 'http://sandbox.studio8d.fr/projets/app/serveur/db_queries.php',
              data: id,
              success: function(data){
                    handleData(data.name); // pour permettre à ajax de rester asynchrone on utilise une fonction dite de callback, qui se charge de manipuler le retour serveur une fois qu'il est reçu.
              },
              error: function(){
                  alert('Erreur de connexion.');   
              }
          });
      }

      function handleData(data){ // la fonction de callback sus-citée
            alert(data);
          }

      get_name(); // et l'appelle de la fonction principale