Soucis avec un if mal interprété ?

Résolu
Signaler
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008
-
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008
-
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

Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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" ?
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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 :)
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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
}
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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");
            }
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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);
%>
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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é
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Heu aucune idée mais ça ne change pas mon soucis :(
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

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