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 :

Requête ajax affichage données undefined


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut Requête ajax affichage données undefined
    bonjour,

    je fait une requete ajax et je reçoi un json et quand je fait en dehors de ma requete : console.log de mes données j'ai rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var content = new Array();
    Backbone.ajax({
    	dataType: "json",
    	url: "urljson",
    	data: "",
    	success: function(val){
    		content[0]	= val;
    	}
    });
    console.log("content "+content);
    console.log("content "+content[0]);
    cela me met undefined

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    je suis d'accord, mais je voudrais quand même traiter mes données reçu en dehors du noeud ajax;

    Dois je faire appel à une nouvelle fonction dans le success ou ??.

    car en faite j'ai deux requête ajax synchrone et je voudrais traiter les deux données reçus simultanément.

  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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    il faut comprendre qu'il n'y a QUE DANS le success que tu auras les valeurs retournées ...

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    il faut comprendre qu'il n'y a QUE DANS le success que tu auras les valeurs retournées ...
    Correction : il n'y a qu'au moment où le callback success sera appelé que l'on aura les valeurs retournées

    Une manière simpliste de résoudre 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
    33
    var content = [];
     
    function faireRequeteA(){
     
    Backbone.ajax({
    	dataType: "json",
    	url: "urljsonA",
    	data: "",
    	success: function(val){
    		content[0]	= val;
                    if(content[1] != null){ quandRequetesAetBfinies(); }
    	}
    });
     
    }
     
    function faireRequeteB(){
     
    Backbone.ajax({
    	dataType: "json",
    	url: "urljsonB",
    	data: "",
    	success: function(val){
    		content[1]	= val;
                    if(content[0] != null){ quandRequetesAetBfinies(); }
    	}
    });
     
    }
     
    function quandRequetesAetBfinies(){
         console.log("content ",content);
    }
    Il existe des solutions plus élégantes, comme les promises, mais ça prendrait un peu plus de temps à expliquer.

  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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Certes ... une fois le retour ajax terminé ...

    dons tout code s'executant avant le success est voué à récupérer des valeurs erronées

    il suffit donc d'appeler une fonction Dans le success ou après ...
    mais comment déterminer le après ???
    un gros setTimeout hasardeux ???

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bien sûr que non... Mais on peut appeler au success un callback déclaré dans un scope parent, comme je l'ai fait dans mon code exemple. Quand tu dis "DANS le success", je le comprends comme "dans le scope de la fonction success".
    jameson veut simplement envoyer les données récupérées à une fonction déclarée ailleurs.

  8. #8
    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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Oui Sylvain je me suis mal exprimé
    Quand tu dis "DANS le success"
    il fallait comprendre APRES le retour ajax donc soit dans le success ou chronologiquement après le retour ajax qui peut être en dehors du scope du success.

Discussions similaires

  1. [AJAX] Requête AJAX avec données SQL
    Par Justsohy dans le forum AJAX
    Réponses: 2
    Dernier message: 24/12/2012, 10h23
  2. Réponses: 3
    Dernier message: 22/10/2010, 08h15
  3. [SQL] Requête et affichage de données
    Par freko dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/02/2008, 02h12
  4. Affichage données selon un autre champ : Requête ou VBA?
    Par Noemy23 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/07/2007, 14h13
  5. [Requête][2007]Affichage des données 1 mois avant échéance
    Par Tourlou57 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 17/04/2007, 11h07

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