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] return dans function


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut [AJAX] return dans function
    Bonjour,

    Voici mon code (dans ma page javascript):
    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
    function isUserAlreadyExist(mail)
    {
        var xhr = getXhr();
        // On défini ce qu'on va faire quand on aura la réponse
        xhr.onreadystatechange = function()
        {
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if(xhr.readyState == 4 && xhr.status == 200)
            {
                idUser = xhr.responseText;
                idUser = trim(idUser);
                if(idUser=="")
                {
                    return false;
                }
            }
        }
        // Ici on va voir comment faire du post
        xhr.open("POST","php/controller/UserController.php?method=isUserAlreadyExist",true);
        // ne pas oublier ça pour le post
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        emailUser=$('#form_inscription #inscription-email').val()
        xhr.send("emailUser="+emailUser);
    }
    Lorsque je passe dans cette méthode je suis dans le cas où je devrai retourner "false" car j'ai mis des alert pour m'en assurer, or lorsque j'appelle cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isUserAlreadyExist(email)==false)
    Ma condition n'est jamais vérifiée. Je ne comprends pas. Je ne peux pas faire de return dans ce genre de fonction? Quelqu'un aurait une solution?

    Merci infiniment.

  2. #2
    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
    A priori c'est une fonction de callback qu'il te faut ici.

    Jette un oeil à cette récente discussion, le principe est le même à peu de choses près. ^^

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    Merci pour ton aide, j'ai bien lu le post, je pensais avoir tout compris mais apparemment non vu qu'il ne se passe rien.
    J'ai modifié ma function comme ceci:
    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
     
    function isUserAlreadyExist(mail,callback)
    {
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200)
    		{
    			idUser = xhr.responseText;
    			idUser = trim(idUser);
    			//alert(idUser);
    			if(idUser=="")
    			{
    				callback.echec(idUser);
    			}
    			else
    			{
    				callback.succes(idUser);
                    return;
    			}
    		}
    	}
    	// Ici on va voir comment faire du post
    	xhr.open("POST","php/controller/UserController.php?method=isUserAlreadyExist",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send("emailUser="+mail);
    }
    Et voici son appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    isUserAlreadyExist(email,{
                    success:function(idUser){
                        alert("success")
                    }
                    ,echec:function(idUser){
                        alert("error")
                    }
                });
    Où est-ce que je me trompes?
    Merci encore

  4. #4
    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 lili2704 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST","php/controller/UserController.php?method=isUserAlreadyExist",true);
    Où est-ce que je me trompes?
    Merci encore
    POST ou GET, il faut choisir

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    Merci pour ton aide, ça marche désormais. Je n'avais pas de problème de POST ou GET mais simplement une erreur de frappe sur le succes qui était devenu success!

    Par contre, j'ai une nouvelle question pour toi, est-ce qu'il est possible de récupérer la valeur retour (success ou error) de ma fonction car je souhaite affecter une variable dans le cas du success mais si je le fais ) l'intérieur ce n'est pas possible!
    Voici ce que j'essaye de faire:
    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
    isUserAlreadyExist(email,{
                    succes:function(idUser){
                        fieldsOk = false;
                        alert(fieldsOk); //cela affiche false
                        message_erreur = head_error;
                        message_erreur += '<div class="form_champ txt_error">Le mail existe déjà dans notre base de données.</div>';
                        message_erreur += '</div>';
                        $(".email_error").html(message_erreur);
                        $(".email_error").removeClass("display_none");    
                        $(".email_ok").addClass("display_none");
                    }
                    ,echec:function(idUser){
                        $(".email_error").addClass("display_none");
                        $(".email_ok").removeClass("display_none");    
                    }
                });
                alert(fieldsOk);//cela affiche true

  6. #6
    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 lili2704 Voir le message
    Par contre, j'ai une nouvelle question pour toi, est-ce qu'il est possible de récupérer la valeur retour (success ou error) de ma fonction car je souhaite affecter une variable dans le cas du success mais si je le fais ) l'intérieur ce n'est pas possible!
    Malgré l'exemple de code que tu présentes je n'ai pas bien compris ce que tu cherches à obtenir...

    Depuis l'une des fonctions de callback tu peux modifier l'état de certains controles sur la page (notamment ajouter ou modifier des input type=hidden par exemple), ou bien même donner une valeur à une variable globale... est-ce ce genre de chose que tu veux faire ? Donne-nous éventuellement un exemple concret ça permet souvent d'éclaircir les questions posées

Discussions similaires

  1. [AJAX] return dans une fonction ajax avec async: false,
    Par murdok74 dans le forum jQuery
    Réponses: 0
    Dernier message: 29/05/2014, 14h42
  2. [AJAX] Faire un return dans le onreadystatechange
    Par gelko dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/12/2006, 14h40
  3. Réponses: 5
    Dernier message: 24/05/2005, 10h09
  4. [Syntaxe] Un return dans un try... Comment faire ?
    Par chuky dans le forum Général Java
    Réponses: 13
    Dernier message: 14/01/2005, 10h33
  5. SSH "return" dans des fonctions
    Par geoffrey_k dans le forum Réseau
    Réponses: 6
    Dernier message: 08/11/2004, 16h19

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