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

jQuery Discussion :

Impossible de connaitre le retour de ma fonction


Sujet :

jQuery

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 Impossible de connaitre le retour de ma fonction
    Bonjour à tous,

    Après maintes et maintes tentatives je viens vous exposer mon problème dans lequel je patauge...

    Voici ma fonction, (je suis dans un $(document).ready(function() {):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    isProspectAlreadyExist(email,{
    				succes:function(idUser){
    					fieldsOk = false;
    					message_erreur = '<div class="txt_error">Le mail existe déjà dans notre base de données. Vous êtes déjà inscrit.</div>';
    					$(".email_error").html(message_erreur);
    					$(".email_error").removeClass("display_none");	
    					$(".email_ok").addClass("display_none");
    				}
    				,echec:function(idUser){
    				}
    			});
    Dans laquelle j'essaye désespérément d'affecter false à fieldsOk. Or du moment où je sors de ma fonction, fieldsOk repasse à true alors que si je l'affiche au moment de l'affectation (dans le succes) il est bien à false.
    Voici ma fonction isProspectAlreadyExist:
    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
    function isProspectAlreadyExist(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);
    			if(idUser=="")
    			{
    				callback.echec(idUser);
    				return;
    			}
    			else
    			{
    				callback.succes(idUser);
    				return;
    			}
    		}
    	}
    	// Ici on va voir comment faire du post
    	xhr.open("POST","php/controller/UserController.php?method=isProspectAlreadyExist",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send("emailUser="+mail);
    }
    J'ai essayé plusieurs contournement, affecter une valeur a un input type hidden que j'avais mis dans mon php mais le resultat est le meme, du moment que je sors de la fonction il n'a plus la même valeur! J'imagine que la page est rechargée ou un truc dans le genre, je ne comprends pas bien.
    Pour etre le plus explicite possible, voici ce que je veux faire. Dans le cas où mon fieldsOk est à false, je fais un "return false" pour afficher mon message d'erreur et ne pas continuer. J'ai essayé de mettre le return false directement dans le cas du "succes" mais cela ne marche pas non plus.
    J'espère avoir été assez claire, n'hésitez pas à me poser des questions et merci par 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
    encore faudrait il fait un return du resultat ou l'affecter à une variable globlae ...
    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 confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    J'ai bien essaye de retourner qqchose ou d'affecter une variable globale mas cela ne marche pas. :-(
    Si j'essaye de l'afficher une fois sortie de ma fonction elle n'a pas la bonne valeur.
    Sais tu pourquoi?
    Merci

  4. #4
    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 : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sujet traité maintes fois !

    Tu fais un appel AJAX asynchrone, donc quand tu sors de la fonction, la réponse AJAX n'a pas encore été reçue et tu ne peux donc pas en utiliser le résultat !

    Le callback correspond à toutes les actions à exécuter après la réponse du serveur.

    Autre détail : si tu utilises jQuery, il est particulièrement maladroit de faire une requête AJAX "classique" : il faut tout faire avec jQuery, tu t'éviteras d'éventuels problèmes de portée.
    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

Discussions similaires

  1. Comparaison du retour d'une fonction impossible
    Par dubitoph dans le forum Langage
    Réponses: 12
    Dernier message: 14/07/2009, 12h36
  2. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54
  3. valeur de retour de la fonction "system" en C
    Par benhoeil dans le forum C
    Réponses: 14
    Dernier message: 16/09/2005, 11h30
  4. Réponses: 7
    Dernier message: 20/03/2005, 14h53
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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