Soucis avec un if mal interprété ?

Résolu
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008 - 16 avril 2008 à 10:10
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008 - 18 avril 2008 à 11:50
Bonjour tout le monde, voila comme indiqué j'ai un soucis avec un bête test de condition, que voici

//Fonction d'envoie du mail
functionsendMail(){
varenvoie=newLoadVars();
varretour=newLoadVars();

envoie.login=fenetre.login.text;
envoie.passwd=fenetre.passwd.text;

envoie.sendAndLoad("check.asp",retour,"POST");
retour.onLoad=function(succes){
fenetre._visible=false;
if(retour=="OK"){// Mail envoyé !
fenetre.login.text="";
fenetre.passwd.text="";
mail._visible=true;
}
else{
// Erreur du serveur ASP ou du serveur Mail
mail2._visible=true;
}
}
}

//je vous passe les différents effets sur les boutons et autre...

fenetre.ok.onRelease=function(){
sendMail();
}

Le soucis vient de ce test là, puisqu'apparemment la condition n'est jamais valide :(          
if(retour=="OK"){// Mail envoyé !

Sachant que côté serveur, celui-ci renvoit les chaînes de caractères "OK" ou "ERREUR" directement.

Si quelqu'un voit d'où vient le problème, merci d'avance

26 réponses

volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 10:46
Ha mais je débute hein, donc je sais pas trop si mon code est correct ou non, j'essaye de me dépatouiller avec les différents tutos que j'ai trouvé ^^.
Faut donc d'abord que je teste si le retour.onLoad est fini ou pas, ça ok j'ai compris :)
Par contre, le retour.Tavariable je comprends pas. Côté serveur, il n'y a pas de variables de renvoyées, juste "OK" ou "ERREUR". Faudrait que je crée côté serveur un variable genre reponse, lui affecter la valeur "OK" ou "ERREUR" suivant ce qu'il se passe, la renvoyée et sous Flash tester retour.reponse=="OK" ?
3
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 10:38
Bonjour,

retour est un objet donc tu devrais écrire retout.TaVariable....

De plus tu ne vérifie pas si success et a true alors a quoi sers le retour.onload si on ne sais pas si le script c'est terminé correctement ou non???

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 10:53
J'ai repris mon code en faisant ce que j'ai cru comprendre. Côté serveur, il renvoit une variable nommée rep contenant la chaîne "OK" ou "ERREUR". Côté AS, voila ce que ça donne

retour.onLoad=function(succes) {
        fenetre._visible=false;
        if(succes=true){
            if(retour.rep=="OK") { //Authentification réussie
                fenetre.login.text="";
                fenetre.passwd.text="";
                aok._visible=true;

Mais ça ne fonctionne toujours pas :(
Je continue à me creuser la tête :)
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 11:18
Tu as bien compris ce que je te disais! :)

Bon maintenant : et tu sur que ton onLoad réussi bien (au passage c'est pas success =true mais if (success) ou if (success = = true))
Corrige ca puis teste pour voir si le script se termine correctement

if (success)
{
}
else
{
   //j'affiche un message d'erreur!
}

Si on passe bien dan le if alors affiche retour.rep voir s'il contient une valeur ou non pour commencé :)
Revient avec les résultats pour nous tenir au courant!

Fais afficher le contenur de retour.rep pour voir ce qu'elle contient...

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 11:24
Et béh, effectivement j'avais oublié un =

En le rajoutant ça me fait une magnifique boucle infinie on dirait :(
Quant à retour.rep avec le lecteur flash, c'est "undefined" qu'il me renvoie :s
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 11:32
Une boucle infinie? Ca c'est pas bien normal avec juste des if  ;)

Essaye en le mettant en ligne (ou en local) plutot qu'avec le lecteur flash >.>
Si tu as pas de plugin de debug tu peu toujours faire afficher dans une box (sinon module flash tracer pour firefox ;)

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 11:43
C'est en mettant en ligne que ça me fait un boucle infinie, et donc impossible de voir la réponse du tracer. Bizarre avec des if effectivement
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 12:03
Tu dois donc avoir un soucis ailleurs...

Un if ne peut pas etre bloquant a moins de renvoyé au début du if a un moment donné (c'est donc pas le if en lui meme qui serais bloquant dans ce cas...).

Tu dois avoir un soucis ailleur car en mettant un trace dans le if et un dans le else tu dois au moins en avoir un des 2 qui s'affiche une fois...

Recopie ton code actuel des fois qu'on trouve une erreur...

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 12:07
Ha mais j'suis tout à fait d'accord, je veux bien admettre que j'suis une bille en Flash :D m'enfin une boucle infinie avec un if voila quoi :(

Voici le code comme tu me l'as demandé

stop();
fenetre.annuler._visible=true;
fenetre.ok._visible=true;

//Fonction d'authentification

function authentification(){
   
var envoie=new LoadVars();
var retour=new LoadVars();

envoie.login=fenetre.login.text;
envoie.passwd=fenetre.passwd.text;

envoie.sendAndLoad("authentification.asp", retour, "POST");
    retour.onLoad=function(succes) {
        fenetre._visible=false;
        if(succes){
            tracer("c'est le if");
            tracer(retour.rep);
            if(retour.rep=="OK") { //Authentification réussie
                fenetre.login.text="";
                fenetre.passwd.text="";
                aok._visible=true;
            }else{
                anok._visible=true;
                tracer("c'est le else");
            }
        }
    }
}

fenetre.annuler.onRelease=function(){
    gotoAndPlay(1);
}
fenetre.ok.onRelease=function(){
    authentification();
}

anok.onRelease=function(){
    gotoAndPlay(1);
}
aok.onRelease=function(){
    gotoAndPlay(1); //Mettre un lien vers le contenu administratif
}
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 12:15
Woops j'viens de me rendre compte d'un boulette:

à la place de

}else{
                anok._visible=true;
                tracer("c'est le else");
            }
        }

il faut mettre
}else
                anok._visible=true;
            }
            else
                trace("c'est le else");
            }
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 12:18
Y'a pas l'air d'avoir de boulette... =/

Au passage les gotoAndPlay(1) c'est bof car si jamais tu rajoute des morceaux...

Le mieux et de données des nom a tes séquences et de faire un gotoAndPlay("NomDeLaSequence");

Juste comme ca ta pas de boucle bloquante dans ton asp des fois?

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 12:22
Ha on peut donner des noms au séquence ? *ouvre les yeux comme un môme de 4ans à Noël devant son camion de pompier*
Je vais voir comment on fait ça.
Sinon mon ASP bah non ya aucune boucle

<%
login=Request.Form("login")
passwd=Request.Form("passwd")

if login="je_vais_pas_te_le_donner" and passwd="celui-la_non_plus" then
rep="OK"
else
rep="ERREUR"
end if
Response.Write(&rep);
%>
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 12:26
Après test, c'est unique le if(succes == true) qui bloque, puisqu'en le commentant ça passe à la suite...
Incompréhension totale là désolé
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 12:29
Oui tu peu nommer les séquences, nommé les frame... C'est beaucoup mieux niveau adptabilité si jamais tu bouge des truc ;)

Ca coince toujours meme avec ton else en plus (un trace dans ton nouveau else peut etre...)...

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 12:33
Ouep ça coince toujours, en gros soit ya le if(succes) et le else qui va avec, et ça bloque. Soit ils y sont pas, mais la condition if(retour.rep == "OK") est jamais respectée.
Tout de même assez bizarre cette histoire
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 14:08
Juste comme ca pourquoi tu as des tracer dans ton code c'est trace( ) la fonction en Flash nan? :s

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 14:11
Heu aucune idée mais ça ne change pas mon soucis :(
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 14:20
Bah change tout tes tracer() en trace() déja...
Ensuite si tu copis ca ca t'affiche quoi?

stop();

fenetre.annuler._visible=true;
fenetre.ok._visible=true;

//Fonction d'authentification
function authentification()

    var envoie=new LoadVars();
    var retour=new LoadVars();
   
    envoie.login=fenetre.login.text;
    envoie.passwd=fenetre.passwd.text;
   
    envoie.sendAndLoad("authentification.asp", retour, "POST");
    retour.onLoad=function(succes)
    {
        trace("passage 0");
        fenetre._visible=false;
        if(succes)
        {
            trace("passage 1");
            trace(retour.rep);
            if(retour.rep=="OK")
            { //Authentification réussie
                trace("passage 2");
                fenetre.login.text="";
                fenetre.passwd.text="";
                aok._visible=true;
            }               
            else
            {
                trace("passage 3");
            }
        }
        else
        {
            anok._visible=true;
            trace("passage 4");
        }
    }
}

fenetre.annuler.onRelease=function()
{
    trace("appuie sur annuler");
    gotoAndPlay(1);
}

fenetre.ok.onRelease=function()
{
    trace("appuie sur ok");
    authentification();
}

anok.onRelease=function()
{
    gotoAndPlay(1);
}

aok.onRelease=function()
{
    gotoAndPlay(1); //Mettre un lien vers le contenu administratif
}

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0
volgur Messages postés 32 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 21 avril 2008
16 avril 2008 à 14:29
Nan mais ce que je voulais dire c'est que je ne savias pas pourquoi j'avais tracer et pas trace, mais qu'en changeant j'avais toujours le même soucis. Sinon pour ton code, bonne nouvelle le programme ne se bloque plus.
Pour ce qui est des différents trace,
Voila ce que j'obtiens:

appuie sur ok
passage 0
passage 1
undefined
passage 3

Maintenant j'ai fais ça avec le launcheur de Flash, et vu que c'est une réponse du serveur normalement, et je ne sais pas comment afficher les trace dans le navigateur :(

Merci en tout cas, je vais essayer de comprendre pourquoi il n'affiche pas le passage 2
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
16 avril 2008 à 14:52
bah la ta ta réponse... il affiche undefined donc ta variable et pas recu !
Mais ton script ASP ce termine bien puisqu'il passe en 1 !

Au passage met le senAndLoad apres le onLoad c'est préférable ;)

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
0