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 :

Recuperer une valeur d'une fonction..


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par d�faut Recuperer une valeur d'une fonction..
    Bonsoir,
    Voil�, mon probl�me va para�tre simple (enfin je l�esp�re), mais je gal�re.
    J'essais avec Jquery et html5 d'acceder � une base de donn�e local, je recupere un r�sultat dans la fonction mais impossible pour MOI de le r�utiliser autre part!

    Pour �tre plus explicite, mon code, qui se trouve dans un fichier .js:

    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
    function lecture_programme_lundi(id,date_sql) {
    db.transaction(function(tx) {
    tx.executeSql("select * from programme where id = ? and  jour = ?", [id,date_sql],
        function(tx, rs) {
            if (rs.rows.length>0) {
    		 var result1=rs.rows.length;
                              //ici result1 est ok!
    			return;
            }
        },
        function(tx, error) {
            alert("Probl�me d'acc�s aux donn�es : " + error.message);
            return;
        });
    });
    }
    Et dans le js, j'appelle la fonction comme suit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    
    $(document).ready(function(){
    id=2;
    DateLundi_sql='2010-10-18';
    lecture_programme_lundi(id,DateLundi_sql);
    // j'aimerai pouvoir utiliser le resultat result1 ici!
    }
    Merci pour vos aides,
    TouFou

  2. #2
    Membre confirm�
    Inscrit en
    Octobre 2008
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par d�faut
    Bonjour,

    Ta fonction ne renvoi rien. Tu ne peux pas utiliser une variable locale � ta fonction, � l'ext�rieur de la fonction.
    Le plus simple c'est que tu remplaces dans ta fonction lecture_programme_lundi le par Et dans ton appel � la fonction
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var resultat = lecture_programme_lundi(id,DateLundi_sql);
    H.I.H

  3. #3
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par d�faut
    Bonsoir,
    Merci pour le coup de main mais cela ne fonctionne pas.

    En fait, j'avais essay� cette fa�on, j'ai cherch� un peu avant de poster

    Je pense que cela ne fonctionne pas car le r�sultat que je veux est dans une sous fonction de la fonction...
    Mais la fa�on dont la sous fonction est appel�e, je ne sais pas quoi �crire pour r�cup�rer le r�sultat.
    Je pense qu'il faut faire comme tu l'a �cris pour sortir le r�sultat de la sous fonction, et ensuite recommencer pour sortir le r�sultat de la fonction principale.
    mais je suis perdu dans l'�criture....
    Si tu vois comment faire, je suis preneur.

    TouFou

  4. #4
    Membre confirm�
    Inscrit en
    Octobre 2008
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par d�faut
    Oups.... je crois que j'avais pas bien tout lu de ton post ou sinon, c'est que j'avais bu !
    La fonction executeSQL est une fonction asynchrone.
    Je suis pas un super expert, mais voici une id�e prise sur Chrome (http://code.google.com/p/lequipe-chr...pec=svn42&r=42) sur laquelle tu devrais pouvoir te baser :
    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
     
    function countUnread(fct) {
            db.transaction(function(tx) {
                    tx.executeSql("SELECT count(*) as c FROM Items Where read != ?", [true], function(tx, result) { 
                            var item = result.rows.item(0);
                            console.log(item['c']);
                            if (fct && typeof fct == "function") {
                                    fct(item['c']);
                            }
                    }, onError);
            });
    }
     
     
    function count() {
            countUnread(function(n){
                    chrome.browserAction.setBadgeText({text :n.toString()});
                    animateFlip();
            });
    }
    H.I.H
    Bon courage.

  5. #5
    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
    Dans ce genre de situations, on utilise habituellement ce qu'on appelle une fonction de callback.

    Le principe est le suivant : dans ton appel � la fonction lecture_programme_lundi, tu ajoutes un autre parametre, qui sera un objet contenant les fonctions � d�clencher selon les r�sultats. Exemple :

    Code javascript : 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
    function lecture_programme_lundi(id,date_sql,callback) {
    db.transaction(function(tx) {
    tx.executeSql("select * from programme where id = ? and  jour = ?", [id,date_sql],
        function(tx, rs) {
            if (rs.rows.length>0) {
    		 var result1=rs.rows.length;
                     callback.succes(result1);
                     return;
            }
            else {
               callback.echec(result1);
        },
        function(tx, error) {
            alert("Probl�me d'acc�s aux donn�es : " + error.message);
            return;
        });
    });
    }

    Et tu appelles la fonction comme �a :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    $(document).ready(function(){
       id=2;
       DateLundi_sql='2010-10-18';
       lecture_programme_lundi(id,DateLundi_sql,{
          succes: function(result1) {
             // et voilà ! ^^
          },
          echec: function(result1) {
             // par exemple, mais tu peux avoir autant de cas de figure que nécessaire, ou même bien sûr un seul
          }
       }
    });

  6. #6
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par d�faut
    @RomainVALERI:

    Merci, ta solution fonctionne. Par contre, j'aimerai l'am�liorer....
    En fait, j'ai besoin de lancer 6 fois cette fonction et de r�cup�rer une fois fini, les 6 r�sultats pour les utiliser dans une autre fonction....

    Je me dis que une fois la fonction appel�e, dans le retour success, je peux rappeler une deuxi�me fois la fonction, puis dans son success recommencer etc... mais je ne suis pas sur que cela soit la fa�on la plus adequate...
    Il y a t'il une autre solution, ou bien l'embricage est-il la solution?


    @teraDev: Merci pour ton coup de main, j'ai opt� pour la deuxi�me solution qui m'a sembl� plus facile

    Bonne journ�e � vous,
    TouFou

  7. #7
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par d�faut
    En fait c'est bon, j'avais juste pas l'habitude de faire comme ca.
    Ca fonctionne tr�s bien.

    Merci � vous deux d'avoir pris le temps de r�pondre.
    TouFou

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 13/04/2015, 11h17
  2. R�ponses: 7
    Dernier message: 26/04/2008, 10h48
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Recupere la valeur d'une ComboBox dans une autre cellule
    Par Henricoo dans le forum Macros et VBA Excel
    R�ponses: 6
    Dernier message: 01/06/2007, 13h56
  5. recuperer la valeur d'une variable dans une nouvlle page
    Par gloglo dans le forum Servlets/JSP
    R�ponses: 10
    Dernier message: 11/01/2007, 17h08

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