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

jQuery Discussion :

Requête Ajax et retour undefined


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 140
    Points
    140
    Par défaut Requête Ajax et retour undefined
    Bonjour,

    Je crée un objet Javascript avec une méthode load qui fait une requête Ajax sur un serveur pour récupérer des données via un script PHP:
    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
    function monObjet() {
     
    	this.layers = [];
     
    	var that = this;
     
        this.load = function() {
     
            var promesse = $.ajax({ 
                type: "GET", 
                url: 'scripts/gs_layersInfos.php', 
                success: function(json){
                                  var obj = JSON.parse(json);
    				for (var i = 0; i < obj.layersInfos.length; i++) {
    					console.log(obj.layersInfos[i]);
    					that.layers.push(obj.layersInfos[i]);
    				}
                },
                error: function(err){alert("Error: Something went wrong"); console.log(err)}
    		});
     
        }
    }
    Les instructions console.log me renvoient bien toutes les infos que je veux.

    Dans la page de mon appli web, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var gs = new monObjet();
    gs.load();
    console.log(gs.layers[0]);
    Mais là, le console.log me renvoie undefined.

    Qu'est ce qu'il manque? est-ce que c'est une histoire de la requete ajax qui est asynchrone? comment y remédier?


    Merci,
    Nico

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Le retourn de l'ajax n'est exploitable QUE DANS le success

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 140
    Points
    140
    Par défaut
    oui, c'est bien dans le success que j'alimente la variable layers de mon objet.
    Alors comment se fait-il que je ne peux plus accèder à cette variable une fois que j'ai appelé la méthode load?

    Nico

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    la notion d'après est plus géographique que séquentielle dans le code ...
    ce n'est pas parceque le ligne est en dessous que ton retour d'ajax est effectué

    quand je dis DANS le success ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     success: function(json){
                                  var obj = JSON.parse(json);
    				for (var i = 0; i < obj.layersInfos.length; i++) {
    					console.log(obj.layersInfos[i]);
    					that.layers.push(obj.layersInfos[i]);
     
                   //ici ton ajax a reçu le retour 
    				}

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 140
    Points
    140
    Par défaut
    oui, mais cet appel se fait au début pour charger des données qui seront ensuite utilisées dans toute l'application.
    Je ne vais pas mettre tout le reste de mon code dans le success ?


    Nico

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Dans l'absolu c'est ce qu'il faut faire
    Tu peux l'externaliser dans une fonction et appeler la fonction DANS le success

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/05/2015, 16h31
  2. Requête ajax affichage données undefined
    Par jameson dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/11/2013, 08h22
  3. [Encodage] Retour d'une requête AJAX
    Par regseb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/10/2013, 14h58
  4. [AJAX] Traitement de retour d'une requête AJAX
    Par Bootax dans le forum AJAX
    Réponses: 19
    Dernier message: 25/03/2009, 16h07
  5. [AJAX] Ajax en retour undefined
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/04/2006, 10h47

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