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

Flex Discussion :

Remote Object Asynchrone [Flex4]


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Par défaut Remote Object Asynchrone
    Bonjour,

    Lors d'une phase d'identification, par exemple, j'utilise un remote object pour accéder à un service PHP. Dans cet exemple, je l'utilise pour verifier si le nom d'utilisateur et le mot de passe font bien parties de la liste des membres de ma table.

    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
     
    /* Appel de mon service PHP */
    public function checkLogin(user:String, pass:String):void
    {
    	_service = new RemoteObject('amfphp');
    	_service.source = _source;
    	_service.addEventListener(ResultEvent.RESULT, checkLoginResult);
    	_service.addEventListener(FaultEvent.FAULT, errors);
    	_service.getOperation("isAdmin").send(user, pass);
    }
     
    /* Récupération du résultat */
    private function checkLoginResult(event:ResultEvent):void
    {
    	_service.removeEventListener(ResultEvent.RESULT, checkLoginResult);
    	_isAdmin = event.result;
    }
    Jusque là tout va bien, si je fais un Alert.show(_isAdmin) à la fin de ma fonction CheckLoginResult, j'ai bien le booléen attendu.

    Maintenant, voilà la problème :
    Lorsque je veux utiliser ce booléen pour conditionner la validation de mon formulaire de login, on a l'impression que la variable "_isAdmin" n'est pas mis à jour tout de suite.
    En effet, dans l'exemple (url : http://nicolasleborgne.dyndns.org/remote), on peut voir que la première fois que l'on valide l'identification, on atterit sur message d'erreur. Par contre, simplement en re-cliquant sur le bouton de validation, le formulaire disparait signifiant que l'identification est correcte.

    En résumé, et après debug, au premier clic, _isAdmin = false, et au deuxième clic, _isAdmin = true.
    J'ai fait pas mal de recherches (notamment sur le fait que l'utilisation de ce genre de services est asynchrone), mais je n'arrive toujours pas à régler le problème.

    En espérant vivement que quelqu'un puisse m'apporter une réponse.

    Merci

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Bonjour,

    J'ai regardé ton code sur ton site, et tu appelles la méthode callAdmin directement après l'appel à ton remote service. donc forcement la premiere fois tu n'as pas la bonne valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     _membre.checkLogin(username.text, password.text);
    callAdmin();


    tu devrais plutôt gérer un event perso(par exemple: LoginEvent.OK / LoginEvent.ERROR) dans ta classe Membre que tu écoutes sur ta popup et en fonction tu appelles ta méthode callAdmin.

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Par défaut
    Merci pour la réponse.

    Je vais essayer de mettre ça en place et je vous tiens au courant de mon avancée

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Par défaut
    Voila, comme convenu je reviens vers vous

    Grâce au conseil de Jim_Nastiq, mon module d'identification fonctionne parfaitement.

    Les étapes de modification sont les suivantes :

    * Ajouter un extends à la classe nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class Membre extends EventDispatcher
    Ceci va permettre d'utiliser l'appel à dispatchEvent (autrement dit on va pouvoir générer un event "écoutable" n'importe où).

    * Créer son évènement (event) :
    ATTENTION : Pour que l'event crée soit "écoutable" de n'importe où, créer l'évènement de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dispatchEvent( new Event("LoginEventOk", true, true)
    C'est surtout le premier "true" qui signale que l'event est accesible par tous les parents.

    * Enfin, on va écouter son évènement à partir du formulaire de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _membre.addEventListener("LoginEventOk", loginOK);
    _membre.addEventListener("LoginEventError", loginError);
    Et voilà, avec ça, plus de problème de réponse asynchrone. Plus besoin de valider 2 fois son formulaire.

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

Discussions similaires

  1. Pyro, remote objects côté client
    Par Antoine_935 dans le forum Bibliothèques tierces
    Réponses: 0
    Dernier message: 15/04/2009, 18h57
  2. Réponses: 4
    Dernier message: 20/09/2008, 13h47
  3. Réponses: 1
    Dernier message: 24/08/2008, 14h08
  4. [ASE]help table proxy--Remote object does not exist
    Par pagyles007 dans le forum Sybase
    Réponses: 2
    Dernier message: 30/07/2007, 10h52
  5. [Net Remoting] Object local + Events
    Par fmichael dans le forum C#
    Réponses: 1
    Dernier message: 27/02/2007, 14h46

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