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 :

Passage de variable refusée (incomprehensible)


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut Passage de variable refusée (incomprehensible)
    bonjour je créé un formulaire avec une question qui fonctionne un peu comme un captcha, j'ai un petit problème de variable. Mon premier alert() fonctionne bien il me donne un mais mon deuxième alert() est vide je n'arrive pas a sortir la variable de la fonction transport. Si quelqu'un aurait une idée merci car une fois ce problème de variable resolu mon script devrait fonctionner correctement. voici le code
    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
    31
    32
    33
    34
    35
    	var err = "";
          if ($F('nom')=="") {new Effect.Appear(document.getElementById('inc_nom',1)); err= "1"}
    	  else{new Effect.Fade(document.getElementById('inc_nom',1));}
     
    	   if ($F('prenom')=="") {new Effect.Appear(document.getElementById('inc_prenom',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_prenom',1));}
     
     
    	   if ($F('tel')=="") {new Effect.Appear(document.getElementById('inc_tel',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_tel',1));}
     
     
     
         new Ajax.Request('reponse.php', {   
             method:'post',  
             parameters: {  
                 "question": $('question').value 
             },  
             onSuccess: function(transport) {  
     
                var response = transport.responseText || "error";
     
     
    			 if (response!="ok") {
     
    			 new Effect.Appear(document.getElementById('inc_question',1));
    			 err= "1";			  
    			 alert(err);
    			  return err;
    			 }
    	  		else{new Effect.Fade(document.getElementById('inc_question',1));}
    			          }  
         });  
     
    	   alert(err);

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    ne la déclare qu'une seule fois, et en globale, et tu ne devrais plus avoir le problème ....

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    non, dsl j'ai modifié mon code, le 2e "var err" était une faute de frappe.
    Ma variable n'est déclarée qu'une fois au début du script.
    Et ca ne fontionne toujours pas.

  4. #4
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    On ne peut pas faire de return sur le callback d'une fonction Ajax

    Il faut que tu mettes ton traitement à la suite dans ton onSuccess

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    J'ai modifié mon script est j'ai toujours ce problème de variable qui ne veut pas sortir de ce onSuccess. Voici le nouveau code :
    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
    31
    32
    33
    34
    35
    36
    37
    var err = "";
          if ($F('nom')=="") {new Effect.Appear(document.getElementById('inc_nom',1)); err= "1"}
    	  else{new Effect.Fade(document.getElementById('inc_nom',1));}
     
    	   if ($F('prenom')=="") {new Effect.Appear(document.getElementById('inc_prenom',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_prenom',1));}
     
     
    	   if ($F('tel')=="") {new Effect.Appear(document.getElementById('inc_tel',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_tel',1));}
     
     
     
     
         new Ajax.Request('reponse.php', {   
             method:'post',  
             parameters: {  
                 "question": $('question').value 
             },  
             onSuccess: function(transport) {		 
                var response = transport.responseText || "error";
    				requ(response);	  		
    		}  
         });  
     
     function requ(response){
      		if (response!="ok") {
     
    			 new Effect.Appear(document.getElementById('inc_question',1));
    			err= "1";			  
    			 alert(err);
    			 return err; // avec ou sans le return le resultat est le meme.			
    		 }
    	  	else{new Effect.Fade(document.getElementById('inc_question',1));
    		}
     }
    	   alert(err);

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    J'ai modifié mon script est j'ai toujours ce problème de variable qui ne veut pas sortir de ce onSuccess.
    Comme je l'ai écrit en gros en rouge, ca c'est pas possible à faire...

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ta variable n'est visiblement toujours pas globale ...
    Tu n'aurais pas besoin de faire de return ....

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    oui je suis d'accord, mais simplement me dire : "ce n'est pas possible" ne m'aide pas vraiment même si c'était marqué en rouge. J'aurais bien voulu un conseil pour faire autrement, un indice, une autre voie à prendre...
    Ça m'aiderait beaucoup merci.

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par tombabibel Voir le message
    oui je suis d'accord, mais simplement me dire : "ce n'est pas possible" ne m'aide pas vraiment même si c'était marqué en rouge. J'aurais bien voulu un conseil pour faire autrement, un indice, une autre voie à prendre...
    Ça m'aiderait beaucoup merci.
    C'est ce qu'on fait depuis le début !
    Tu suivrais les conseils, ça aiderait ...
    Citation Envoyé par E.Bzz Voir le message
    Ta variable n'est visiblement toujours pas globale ...
    Tu n'aurais pas besoin de faire de return ....
    A+

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Ta variable n'est visiblement toujours pas globale ...
    Tu n'aurais pas besoin de faire de return ....
    je dirias pour ma défense que ma variable est globale partotu sauf dans mon onSuccess. Car sans ce problème, le script marche parfaitement.

  11. #11
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Ta variable n'est visiblement toujours pas globale ...
    Ca ne changerait rien, puisqu'au moment ou il arriverait à l'instruction suivant le Ajax.Request pour utiliser ta variable globale, la requete ne sera pas encore exécutée, donc ta variable pas peuplée.

    oui je suis d'accord, mais simplement me dire : "ce n'est pas possible" ne m'aide pas vraiment même si c'était marqué en rouge. J'aurais bien voulu un conseil pour faire autrement, un indice, une autre voie à prendre...
    Ça m'aiderait beaucoup merci.
    Comme je l'ai écrit en dessous de ce qui était marqué en rouge, il faut que tu mettes tous les traitements que tu comptais faire avec ta variable en dehors du onSuccess DANS le onSuccess. De facon à ce qu'ils ne soient exécutés que dès que ta requete aura bien retourné son resultat.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    C'est ce qu'on fait depuis le début !
    Tu suivrais les conseils, ça aiderait ...

    A+
    Ok dsl, peut être que le script entier pourrait vous aider a comprendre. Je fais un formulaire avec vérification. Et j'ai creer une sorte de captcha avec une question. Le script va vérifier la réponse sur la page reponse.php et si toutes les conditions sont réunies le mail est envoyé.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    function validation() 
    { 	 						
    		var err = "";
          if ($F('nom')=="") {new Effect.Appear(document.getElementById('inc_nom',1)); err= "1"}
    	  else{new Effect.Fade(document.getElementById('inc_nom',1));}
     
    	   if ($F('prenom')=="") {new Effect.Appear(document.getElementById('inc_prenom',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_prenom',1));}
     
     
    	   if ($F('tel')=="") {new Effect.Appear(document.getElementById('inc_tel',1));err= "1"}
    	   else{new Effect.Fade(document.getElementById('inc_tel',1));}
     
     
     
     
         new Ajax.Request('reponse.php', {   
             method:'post',  
             parameters: {  
                 "question": $('question').value 
             },  
             onSuccess: function(transport) {		 
                var response = transport.responseText || "error";
    				requ(response);	  		
    		}  
         });  
     
     function requ(response){
      		if (response!="ok") {
     
    			 new Effect.Appear(document.getElementById('inc_question',1));
    			err= "1";			  
    			 alert(err);
     
    		 }
    	  	else{new Effect.Fade(document.getElementById('inc_question',1));
    		}
     }
    	   alert(err);
     
    		if (err!="") {return false;}
     
     
    		else { 
     
    				 new Effect.Fade(document.getElementById('formu',1)); // effet de disparition de la div formu
    				// $('formulaire').style.display = 'none'; // rend invisible le formulaire
    				// document.getElementById('formulaire').remove(); // supprime le formulaire
     
    					new Ajax.Request('envoi.php',{
    						method: 'post',
    						asynchronous: true,
    						contentType:  'application/x-www-form-urlencoded',
    						encoding:     'UTF-8',
    						parameters: { tel : $F('tel'),message : $F('message'),nom : $F('nom'),prenom : $F('prenom'),type : $F('type')},
    						onSuccess: function(){MailOK();}, 
    						onFailure: function(){alert('ca na pas marché');}		});
    					function MailOK(){
    					setTimeout("new Effect.Appear(document.getElementById('textOK',1));",1000)  // effet d'apparition de la div textok apres une temps de 1 seconde		
    					}
           } 
     
    }

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Ca ne changerait rien, puisqu'au moment ou il arriverait à l'instruction suivant le Ajax.Request pour utiliser ta variable globale, la requete ne sera pas encore exécutée, donc ta variable pas peuplée.



    Comme je l'ai écrit en dessous de ce qui était marqué en rouge, il faut que tu mettes tous les traitements que tu comptais faire avec ta variable en dehors du onSuccess DANS le onSuccess. De facon à ce qu'ils ne soient exécutés que dès que ta requete aura bien retourné son resultat.
    je vais essayé de faire comme tu as dis. Je te tiens au courant.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 49
    Points
    49
    Par défaut
    Je vous ai écouté et mon script marche. Merci a vous !

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function validation() 
    { 	 						
     
         new Ajax.Request('reponse.php', {   
             method:'post',  
             parameters: {  
                 "question": $('question').value 
             },  
             onSuccess: function(transport) {		 
                var response = transport.responseText || "error";
     
    			var err = "";
     
    			if ($F('nom')=="") {new Effect.Appear(document.getElementById('inc_nom',1)); err= "1"}
    			else{new Effect.Fade(document.getElementById('inc_nom',1));}
     
    			if ($F('prenom')=="") {new Effect.Appear(document.getElementById('inc_prenom',1));err= "1"}
    			else{new Effect.Fade(document.getElementById('inc_prenom',1));}
     
     
    			if ($F('tel')=="") {new Effect.Appear(document.getElementById('inc_tel',1));err= "1"}
    			else{new Effect.Fade(document.getElementById('inc_tel',1));}	  		
     
     
    		   if (response!="ok") {					 
    		   new Effect.Appear(document.getElementById('inc_question',1));
    			err = "1";			  
     
    		   }
    			else{new Effect.Fade(document.getElementById('inc_question',1));
     
    		   }
     
     
     
    			if (err!="") {return false;}
     
     
    			else { 
     
    						 new Effect.Fade(document.getElementById('formu',1)); // effet de disparition de la div formu
    						// $('formulaire').style.display = 'none'; // rend invisible le formulaire
    						// document.getElementById('formulaire').remove(); // supprime le formulaire
     
    							new Ajax.Request('envoi.php',{
    								method: 'post',
    								asynchronous: true,
    								contentType:  'application/x-www-form-urlencoded',
    								encoding:     'UTF-8',
    								parameters: { tel : $F('tel'),societe : $F('societe'),nom : $F('nom'),prenom : $F('prenom'),type : $F('type')},
    								onSuccess: function(){MailOK();}, 
    								onFailure: function(){alert('ca na pas marché');}
    							});
     
    							function MailOK(){
     
    									setTimeout("new Effect.Appear(document.getElementById('textOK',1));",1000)  // effet d'apparition de la div textok apres une temps de 1 seconde		
    							}
     
    				}		
     
    		}
     
        });  
     
     
    }

  15. #15
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Je vous ai écouté et mon script marche.
    C'est vrai que sur developpez on a pour habitude de dire n'importe quoi

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

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 13h25
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 11h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 15h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 18h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 10h48

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