Simple récupération de valeur d'une fonction js

Résolu/Fermé
Erhic2 Messages postés 7 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 18 août 2013 - Modifié par Erhic2 le 18/08/2013 à 18:48
Erhic2 Messages postés 7 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 18 août 2013 - 18 août 2013 à 20:17
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' 



A voir également:

2 réponses

BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 20
Modifié par BlackYoup le 18/08/2013 à 20:10
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 :-)
0
Erhic2 Messages postés 7 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 18 août 2013
18 août 2013 à 20:17
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
0