Avatar billede flashdevil Nybegynder
05. juli 2006 - 19:51 Der er 7 kommentarer

SendAndLoad...Return value

Hej Alle

Jeg prøver at gemme noget i en database via denne funktion:


----------------------------------------------------------------

function submitEntry(thename){
   
    myVars = new LoadVars();
        myVars.flashplayername = thename;

      myVars.onData = function(src){
    myVars.decode(src)
   
    if (myVars.theresult == "Okay") {
   
    trace("succes");

   
    }
   
    return myVars.theresult;
   
    }
   
  myVars.sendAndLoad("http://"+_parent.whatdomain+_parent.folderpath+"submit.php", myVars, "POST");


}

----------------------------------------------------------------


Kalder den med noget i denne stil:

theReturnValue = submitEntry(1000);
trace(theReturnValue);


Men min returnvalue er altid bare undefined ??

Nogen ide hvorfor ?
Avatar billede flashdevil Nybegynder
05. juli 2006 - 20:28 #1
værdien fra db'en kommer fint tilbage hvis jeg tracer den !
Avatar billede _k Nybegynder
06. juli 2006 - 11:03 #2
Du er ude i et typisk tidsproblem. Når du kalder din submitEntry() går scriptet ikke i stå og venter på at funktionen har eksekveret sit indhold. Funktioner får jo ellers lov til at gøre det de skal gøre, men når du kalder LoadVars() kommer der et tidsaspekt med som ødelægger denne logik. Det dokument der kaldes skal jo lige hentes og det tager tid.

Derfor skal du lave din logik om. Du bliver nødt til at sætte din "theReturnValue" lig med "myVars.theresult" inde fra callbacken - altså onData-metoden (som også kunne være "onLoad"!). På den måde har du fat i variablen og kan arbejde videre derfra.

...indrømmet, det er knap så kønt. Til gengæld slipper du ikke udenom denne lidt kunstige konstruktion når du arbejder med AS2.
Avatar billede flashdevil Nybegynder
06. juli 2006 - 11:33 #3
hej _K

Ja tænkte nok det noget med at det tager lidt tid at hente data.

Er det du forslå at skrive:

"theReturnValue = myVars.theresult" inde i callbacken ?

Det vil altså sige at jeg bliver nok nødt til at "lytte" efter status på theReturnValue i et enterframe loop. Og så derefter gøre "noget" i forhold til om den er true/false.

Problemet er nemlig at jeg ikke kan ligge noget "gør noget iforhold til theReturnValue" kode ind i Callbacken.
Avatar billede _k Nybegynder
06. juli 2006 - 12:21 #4
Hvorfor kan du ikke scripte noget logik inde i callback-metoden?

Ellers er den "traditionelle" måde at gøre tingene på at kalde en funktion inde fra callbacken. En funktion som så indeholder resten af logikken, f.eks. at placere indholdet fra det man loader ind i et tekstfelt. Noget i retning af:

...
myVars.onLoad = function(src){
  setMyContent(this);
}
...

function setMyContent(content:Object) {
  tekstfelt.text = content.variabelfraLoadVars;
  // Du skal så nok have fat i content.theresult
}

Hov, ser også at du bruger "sendAndLoad" - medmindre du har en god grund til at differntiere imellem et afsende-objekt og et modtage-objekt, så kan du i stedet nøjes med "load"
Avatar billede flashdevil Nybegynder
06. juli 2006 - 12:42 #5
Grunden til at jeg ikke kan placerer noget i callback funktionen, er at den ligger inden i en Lukket Component.

Det var så tanken at når man kalder en funktion i componenten kunne man så få f.eks en succes = true/false tilbage i "theReturnValue" og derud fra selv bestemme hvad der så skal ske.
Avatar billede _k Nybegynder
06. juli 2006 - 13:21 #6
En fornuftig ide med true/false, men du får det aldrig til at virke på den måde. Jeg kunne ellers også godt tænke mig at få strukturere min kode på den måde, men den går altså ikke.

Har du slet ikke adgang til at ændre i komponente? Hvis nej, så bør du nok droppe den og lave det selv - så meget kode handler det jo ikke om?
Avatar billede flashdevil Nybegynder
06. juli 2006 - 22:31 #7
Hej k

Jo jo jeg kan skam ændre alt det jeg vil, idet der er mig der laver componenten :-)

Men jeg ønsker ikke brugerne af componenten skal kunne ændre i dens kode, blot anvende den via forskellige kald.

Anyway tak for hjælpen, jeg tror du har givet mig en alternativ ide, idet mindste har jeg fået vished for at der ikke blot var en fejl i min kode :-)
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