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

AJAX Discussion :

[AJAX] Portée d'une variable


Sujet :

AJAX

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Points : 66
    Points
    66
    Par défaut [AJAX] Portée d'une variable
    Bonjour,

    J'aurais aimé savoir quelle était la portée de la variable "donnee" dans le script ci-dessous.

    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
    function retvaleur()
    {
    	select = document.getElementById("enta");
    	choice = select.selectedIndex;
     
    	var xhr = getXhr();
    	xhr.onreadystatechange = function()
    	{
    	    if(xhr.readyState==4 && xhr.status==200)
                     {
    	          donnee = xhr.responseText;
    	     }
    	}
    	xhr.open("POST","ajax1.php",true);
    	xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    	valeur = select.options[choice].value;
    	xhr.send("valeur"+valeur);
    }

  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 : 53
    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
    Par défaut
    Etant donné qu'elle n'est pas déclarée avec var, sa portée est globale.
    Ensuite, la question utile à se poser est "quand est-elle disponible".
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Points : 66
    Points
    66
    Par défaut
    En effet car je n'arrive pas à la récupérer dans mon <body>. Si je fait un alert(donnee) dans la fonction ça marche bien, mais si je fais la même chose à l'extérieur, rien ne se passe.

  4. #4
    Membre régulier Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 102
    Points
    102
    Par défaut
    Bonjour

    La variable globale donnee est définie quand la fonction est appelée. Si vous cherchez à l'atteindre avant qu'un appel à la fonction soit fait, la globale n'existe pas encore.

  5. #5
    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 : 53
    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
    Par défaut
    Au-delà de ça, étant donné que la variable est alimentée par le résultat d'une requête AJAX, il est important de prendre en compte l'aspect asynchrone.
    Un classique AJAX : utiliser les données au bon moment !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Points : 66
    Points
    66
    Par défaut
    Ok, j'ai compris ce que tu dis. La variable que je demande d'afficher n'est pas encore arrivée du serveur au moment où je la demande. Comment puis-je faire alors?

  7. #7
    Membre régulier Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 102
    Points
    102
    Par défaut
    Tout code exploitant les données reçues en AJAX doit être mis à l'intérieur de la fonction xhr.onreadystatechange, ou dans une fonction appelée depuis cette même fonction.
    Je te conseille d'aller jeter un oeil du côté du lien de Bovino et des tutoriels AJAX.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Points : 66
    Points
    66
    Par défaut
    C'est ce que j'ai fait. C'est comme cela que j'ai compris que ma variable ne s'affichait pas. J'ai aussi suivi 2 tutos concernant Ajax :

    http://siddh.developpez.com/articles/ajax/

    http://christele.developpez.com/tuto...ajax-en-clair/

    Mais je ne comprends pas comment les retours de base sont exploités.

  9. #9
    Membre régulier Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 102
    Points
    102
    Par défaut
    Les données que le script PHP récupèrent doivent être converties en JSON ou XML, avec la fonction json_encode par exemple.
    La chaîne JSON pourra ensuite être traduite en un objet javascript avec un parser JSON :
    http://www.json.org/js.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Faire passer une variable $_FILE par AJAX
    Par Mazike dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/03/2007, 12h22
  2. Portée d'une variable dans une boucle FOR ?
    Par Neo41 dans le forum C++
    Réponses: 20
    Dernier message: 17/11/2006, 11h14
  3. [AJAX] Passage d'une variable très longue avec AJAX
    Par Figaro83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2006, 16h53
  4. [XSLT] pb portée d'une variable
    Par NPortmann dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/05/2006, 15h53
  5. Portée d'une variable globale
    Par Giill dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/12/2005, 10h13

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