Partage
  • Partager sur Facebook
  • Partager sur Twitter

objet et ajax

avec un poil de Jquery

Sujet résolu
    14 décembre 2010 à 17:29:41

    Bien le bonjour,

    Alors voilà j'ai voulu faire du pseudo objet en js et je me retrouve devant un problème que je ne comprend pas.
    J'ai créé un objet joueur contenant ce code

    function Joueur() {
    	
    	$.ajax({
    		url: 'ajax.php',
    		type: 'post',
    		dataType: 'json',
    		data: 'action=get_joueur',
    		success: function(data) {
    			this.infos = data;
    		}
    	});
    	
    }
    


    Seulement voilà, quand j'instancie cet objet et que j'essaie d'accèder aux infos, je me tape un undefined

    var joueur = new Joueur();
    console.log(joueur.infos);
    


    Ca n'est apparemment pas un problème de timing, j'ai essayé avec async:false dans ma requète ajax et j'obtiens la même chose, j'ai même mis le log des infos sur un bouton pour pouvoir le lancer quand je suis certain que l'objet est initialisé mais que nenni, toujours undefined.
    C'est probablement évident mais j'ai trop rarement codé comme ça pour voir où se situe le problème.

    Merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2010 à 17:34:39

      Je ne vois pas "infos" dans ta fonction Joueur. Et je suis pas sur que se soit comme sa qu'on dois créer une classe en JS.
      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        14 décembre 2010 à 17:48:31

        Je me suis basé sur cet article pour la création de classe
        http://www.phpied.com/3-ways-to-define [...] script-class/
        et "infos" est dans le success de la requête ajax
        this.infos = data;
        • Partager sur Facebook
        • Partager sur Twitter
          15 décembre 2010 à 0:29:49

          Si je comprend le principe de cette requête tu ne pourra lire les infos que lors de la création du joueur, il faudrait peut etre faire une fonction getInfo() qui recupere la valeur data un peu comme sa:
          function Joueur() {
          var info;	
          	$.ajax({
          		url: 'ajax.php',
          		type: 'post',
          		dataType: 'json',
          		data: 'action=get_joueur',
          		success: function(data) {
          			this.infos = data;
                                  info = data;
          		}
          	});
                  
                  function getInfo(){
                      return info;
                  }
          	
          }
          

          Bon en meme temps je suis pas très fort en jQuery.
          • Partager sur Facebook
          • Partager sur Twitter
          $2b||!$2b
            15 décembre 2010 à 10:17:28

            Le Jquery n'est là que pour la requète ajax, le reste ça n'est que du js.
            J'aurais bien aimé garder le joueur.infos mais je n'y arrive pas, du coup je me suis rabattu sur ta solution.

            function Joueur() {
            	
            	var infos;
            	
            	$.ajax({
            		url: 'ajax.php',
            		type: 'post',
            		dataType: 'json',
            		async: false,
            		data: 'action=get_joueur',
            		success: function(data) {
            			infos = data;
            		}
            	});
            	
            	this.get_infos = function(){
            		return infos;
            	}
            	
            }
            


            avec un appel supplémentaire pour les infos

            var joueur = new Joueur();
            	var infos_joueur = joueur.get_infos();
            


            Merci pour le coup de main!
            • Partager sur Facebook
            • Partager sur Twitter
              15 décembre 2010 à 10:33:32

              Pas de probleme ^^
              • Partager sur Facebook
              • Partager sur Twitter
              $2b||!$2b

              objet et ajax

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown