Avatar billede idiotbarn Nybegynder
19. august 2004 - 02:39 Der er 18 kommentarer og
1 løsning

SendandLoad for dummies

Jeg har ikke helt forstået SendandLoad funktionen i flash og håber i kan hjælpe med at forklare den.
Jeg har kikket lidt rundt og har fundet et loginscript der siger noget i stil med:

myVar=new LoadVars();
myVar.txtBruger=txtBruger;
myVar.txtPSW=txtPSW;
myVar=SendandLoad("xxx.asp,myVar,"POST")

men hva så? Jeg regner med man har oprettet nogen variabler, myVar, hvor den sender det som tekstfelterne: txtBruger og txtPSW indeholder igennem myVar og til xxx.asp filen. Er det rigtigt? og hvordan får man det tilbage igen. Jeg har en asp fil som tager request.form("txtBruger") (og txtPSW), kontrollere dem i en database og smider Status=False eller True tilbage alt efter om det er rigtigt eller ej, men hvordan kommer jeg videre med flash og hvad er det helt præcis der er lavet ovenfor...helt fundamentalt
Avatar billede _k Nybegynder
19. august 2004 - 09:25 #1
myVar refererer til det objekt du lige har oprettet (myVar = new LoadVars())
I "myVar.txtBruger=txtBruger" og "myVar.txtPSW=txtPSW" smider du nogle variable ind i objektet - i det her tilfælde med stor sandsynlighed fra nogle tekstfelter.

Når du så sender, POST'er du disse to variable til den asp-side du henviser til. myVar i sendAndLoad refererer til det objekt der skal kaldes, når variablene er afsendt og der modtages svar. Man kan godt modtage i samme objekt, men af og til er det smartere med et særskilt.

Det du mangler i denne sammenhæng er et .onLoad på dit objekt. Det der skal ske når indholdet er modtaget:

myVar.onLoad = function() {
  trace("Hurra, variablene er nu afsendt");
}
Avatar billede idiotbarn Nybegynder
19. august 2004 - 12:11 #2
er de ikke modtaget?
Avatar billede idiotbarn Nybegynder
19. august 2004 - 12:21 #3
Noget i den stil:
on (release) {
    myVar = new LoadVars();
    myVar.username = username;
    myVar.pass = pass;
    myVar.sendAndLoad("http://www.xxx.dk/Flashlogin.asp", myFunk, "POST");
    myVar.onLoad = function() {
        trace("WEE");
        }
}
Hvad gør trace, og hvilke variabelnavne skal jeg bruge bagefter? Asp retunere Status variablen eller ligger den den ind i myVar?
Avatar billede idiotbarn Nybegynder
19. august 2004 - 12:22 #4
myVar.sendAndLoad("http://www.xxx.dk/Flashlogin.asp", myVar, "POST");
lige en rettelse
Avatar billede _k Nybegynder
19. august 2004 - 12:22 #5
Dit script gør ikke andet end at sende nogle variable til en asp-side. Den kalder sig selv, men holder sig for ørende når der kommer svar. Du kan altså ikke se at der er sket noget som helst i Flash....
Avatar billede idiotbarn Nybegynder
19. august 2004 - 13:02 #6
ah...det forklarer en del...men hvordan får jeg så variablen tilbage? ASP smider Status variablen tilbage, men er den inde i flash på dette tidspunkt?
Avatar billede _k Nybegynder
19. august 2004 - 13:15 #7
Jeg ville nok bruge to LoadVars for overskuelighedens skyld. En til at sende og en til at modtage.

sendVar = new LoadVars();
sendVar.username = username;
sendVar.pass = pass;
minKnap.onPress = function() {
  sendVar.sendAndLoad("http://www.xxx.dk/Flashlogin.asp", modtageVar, "POST");
}

modtageVar = new LoadVars();
modtageVar.onLoad = function() {
  trace("Nu skulle der gerne være sendt noget til asp: " + this.statusVariabel); // Hvis din asp-side outputter: statusVariabel=Alt er ok
}
Avatar billede idiotbarn Nybegynder
19. august 2004 - 13:28 #8
men hvad gør trace?
Avatar billede _k Nybegynder
19. august 2004 - 13:38 #9
trace() bruger man i Flash til at printe noget til outputvinduet. Du bruger det kun når du tester.
I stedet for trace() smider du et eller andet ind som indikerer at variablen er sendt. Denne meddelelse kan være aghængig af hvad din status-variabel fortæller dig. Feedbacken kan f.eks. være et mc der hopper til en bestemt frame, en tekst som kommer frem eller meget andet - det lader jeg være op til dig.

Det vigtige er, at du kan tilgå din asp-variabel med this.variabelnavn
Avatar billede idiotbarn Nybegynder
19. august 2004 - 13:41 #10
ok...så tror jeg jeg er ved at ha det...jeg kikker lige på det senere...men tusind tak for hjælpen so far
Avatar billede idiotbarn Nybegynder
20. august 2004 - 01:22 #11
Kan jeg godt sidde med flashen på computeren og "linke" til en aspfil der ligger på en server?
Avatar billede idiotbarn Nybegynder
20. august 2004 - 02:04 #12
hmm...jeg får hele tiden en "Error opening URL" url'en er god nok...har prøvet at kopiere den over i browseren. I min første og eneste frame har jeg:

sendVar = new LoadVars();
sendVar.username = username.text;
sendVar.pass = pass.text;
minKnap.onPress = function() {
sendVar.sendAndLoad("http://www.xxx.dk/Flashlogin.asp", modtageVar, "POST");
}

modtageVar = new LoadVars();
modtageVar.onLoad = function() {
//tekstfelter for at se om der er noget der giver noget resultat. userInfo er det som asp retunere
stat1=modtageVar
stat2=userInfo
}

og en knap der hedder minKnap.
Ligger jeg flashfilen op på serveren og prøver, og logger jeg ind med de rigtige oplysninger viser stat1:
"userInfo=false%0D%0A%09%0D%0A%3Cscript%3E%0D%0Aalert%28%27%2C%27%29%0D%0A%3C%2Fscript%3E&onLoad=%5Btype%20Function%5D"
Ligger jeg den ikke op viser den ikke noget

Jeg kan ikke få
Avatar billede _k Nybegynder
20. august 2004 - 10:36 #13
Du kan godt tilgå en url internt fra Flash (hvis din firewall tillader det, og adressen er 100% korrekt)

Hvordan er din asp-side formatteret? Altså præcis hvad outputter den, når du sender den en query?

(Du udskriver et funktionsindhold til stat1 og de kan godt være svære (sagde nogen umulige?) at hitte rede i ;o)
Avatar billede idiotbarn Nybegynder
20. august 2004 - 13:16 #14
Asp:
If rs.EOF Then
        Message="userInfo=false"
    Else
        If(StrComp(rs("password"), inPassword, vbTextCompare) =0) Then
            Message="userInfo=true"
        Else
            Message = "userInfo=false"
        End If
    End If
    Response.Write(Message)

hvis jeg bruger trace:
trace("Nu skulle der gerne være sendt noget til asp: " + this.userInfo);
får jeg false...skulle være true
Avatar billede _k Nybegynder
20. august 2004 - 13:26 #15
Hvis du i stedet for POST bruger GET, er det nemmere at teste om din asp-side opfører sig som den skal. Så kan du nemlig anvende getURL() til at sende dine variable til siden og få et nyt vindue åbnet.

Hardcodet ser det sådan her ud (du skal bare kyle det på en knap):

getURL("http://www.xxx.dk/Flashlogin.asp", "whatEver");

Når du så kigger på html-kilden, skulle den gerne åbenbare hvad hvad der sker. Og så kan du jo frejdigt teste til det fungerer...
Avatar billede idiotbarn Nybegynder
20. august 2004 - 13:28 #16
Jeg har fundet ud af den har et problem med at få tekstfelternes indhold sendt...hvis jeg udskriver:
<%
        inUserName = replace(Request.form("username"),"'","''")
        inPassword = replace(Request.form("pass"),"'","''")

        If inUserName="Brian" AND inPassword="chr" Then
            Message="userInfo=true"
        Else
            Message = "userInfo=false"
        End If
       
        Message=Message & "," & inUserName & "," & inPassword
    Response.Write(Message)
%>
og trace("Nu skulle der gerne være sendt noget til asp: " + this.userInfo);
får jeg: Nu skulle der gerne være sendt noget til asp: false,,
Avatar billede idiotbarn Nybegynder
20. august 2004 - 13:35 #17
siden burde opføre sig ok...jeg har lavet en html side med de samme tekstfelter og testet den der...
Avatar billede idiotbarn Nybegynder
20. august 2004 - 14:19 #18
Det skulle hedde:
minKnap.onPress = function() {
sendVar.username = _level0.username.text;
sendVar.pass = _level0.pass.text;
sendVar.sendAndLoad("http://www.karen.dk/Flashlogin2.asp", modtageVar, "POST");
}
i stedet for...nu virker det...tak for hjælpen...det giver mening nu...svar hvis du vil ha lidt point :)
Avatar billede _k Nybegynder
20. august 2004 - 15:57 #19
Alle tiders at du fik hul igennem :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester