26. marts 2006 - 12:14Der er
17 kommentarer og 1 løsning
Svært at foklare!
I tekstfeltet login.respons står der "hverken sand eller falsk???", når jeg kører programmet, dvs. variablen myLoadVars.feedback er hverken true eller false. Hvis jeg så udkommenterer if-sætningerne og aktiverer den sidste linie istedet for, står der nu true i tekstfeltet login.respons! Er det ikke ret svært at forklare?
trace("success: "+success); if(myLoadVars.feedback==true){login.respons="Godkendt!"} else if (myLoadVars.feedback==false){login.respons="Ikke godkendt!"} else {login.respons="hverken sand eller falsk???"} //login.respons=myLoadVars.feedback; // Virker!
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
myLoadVars.feedback er en streng og ikke en boolean, så din kode skal se sådan her ud:
if(myLoadVars.feedback=="true"){login.respons="Godkendt!"} else if (myLoadVars.feedback=="false"){login.respons="Ikke godkendt!"} else {login.respons="hverken sand eller falsk???"}
Og hvis du åbner login.asp i browseren, hvad ser du så? Jeg gætter krafigt på, at du har et linjeskift til sidst efter den sidste %>, så output bliver "feedback=true\n" og så har variablen jo en newline til sidst i værdien.
Hvis den ligger på foo.dk/login.asp, så åbner du din browser på foo.dk/login.asp - vel? Hvordan åbner du andre sider i en browser? Bare fordi flash skal læse den, så er den som sådan ikke forskellig fra alle andre asp-sider.
Ah, men "False" er jo ikke det samme som "false". Du har nok lidt misforstået LoadVars, som at de kan overføre en vilkårlig datatyper. LoadVars kan KUN overføre strenge, så du kan ikke overføre en boolean fra ASP til Flash uden at konvertere den til en streng og konvertere den tilbage igen.
Du bør nok rette din ASP, så du ved hvilket outputformat, som du bruger - og så omringe det med &-tegn, så du er sikker på, at variablen kun har den længde, du ønsker og ikke har ekstra whitespace:
If (RS.bof) and (RS.eof) then Response.Write("&feedback=false&") Else Response.Write("&feedback=true&") End if
Så kan du i flash lave:
var feedback = myLoadVars.feedback == "true"; if (feedback) { login.respons = "Godkendt!"; } else { login.respons = "Ikke godkendt!"; }
Så er der lidt bedre styr på variablerne og deres typer :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.