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 :

variable globale et résultat local


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 55
    Par défaut variable globale et résultat local
    Bonjour à tous,
    pourquoi le résultat n'est pas celui souhaité :
    voici mon code :
    ------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //une fonction callback:
    function getData(str)//str='new_value'
    {
    	mydata=str;
    }
    var mydata="init_value";
    getData étant une fonction callback donc ne fait pas de return (dans mon cas)
    donc je voulais procèder via une variable globale!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alert(mydata);
    //affiche "init_value" or je veux 'new_value'
    //comment faire
    Merci à tous d'avance !

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Heu je ne vois pas le problème ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
     mydata="init_value";
    function getData(mystr){
     mydata=mystr
    }
     
    getData("new_value")
    alert(mydata)
     
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par zenzo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //...
    var mydata="init_value";
    ... donc je voulais procèder via une variable globale! ...
    Le mot-clef "var" avant l'identifiant de ta variable en fait précisément une variable locale ; retire ce mot-clef pour avoir une globale (mais cette pratique est déconseillée quand on peut faire autrement).
    En même temps, comme nous ignorons pourquoi tu préfères utiliser une globale... difficile d'être plus précis ^^

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 55
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Le mot-clef "var" avant l'identifiant de ta variable en fait précisément une variable locale ; retire ce mot-clef pour avoir une globale (mais cette pratique est déconseillée quand on peut faire autrement).
    En même temps, comme nous ignorons pourquoi tu préfères utiliser une globale... difficile d'être plus précis ^^
    Bonjout tout le monde,
    merci d'abord pour vos réponses masi me suis-je bien expliqué?
    je vous redonne le contexte réel :
    j'utilise la librairie jquery et j'ai une fonction qui me fait un appel ajax de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.post(DEF_URL_PROJET, {},getData, "json");
    getData étant une fonction callback
    on pourrait écrire si on veut (si pas pas beaucou de traitemet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var mydata="init_value";
    $.post(DEF_URL_PROJET, {},function(result)
    {
       mydata=result;
    }
    , "json");
     
    alert(mydata) // donne "init_value";
    j'espère avoir donner plus de précision !
    merci d'avance !

  5. #5
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $.post(DEF_URL_PROJET, {},function(result)
    {
       window['mydata']=result;
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    C'est de l'ajax, donc asynchrone. L'alerte intervient avant le retour de la requête! Il faut mettre l'alerte dans le callback.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 55
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    C'est de l'ajax, donc asynchrone. L'alerte intervient avant le retour de la requête! Il faut mettre l'alerte dans le callback.
    mais non l'alerte est un exemple, l'application ne fonctionne pas avec des alertes!
    mon souci si tu as bien suivi le problème est d'alimenter une variable globale!
    merci quand même !

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

Discussions similaires

  1. Problème de variables globales / locales
    Par onigami dans le forum Général Java
    Réponses: 9
    Dernier message: 06/03/2008, 14h01
  2. Réponses: 7
    Dernier message: 15/11/2007, 14h41
  3. Variable globale et locale
    Par momo70 dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/07/2007, 09h49
  4. variables globales ou locales
    Par exhortae dans le forum C
    Réponses: 6
    Dernier message: 09/04/2007, 01h29
  5. variable globale ou locale pour CurrentDB
    Par jibouze dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/05/2006, 17h15

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