13. maj 2002 - 20:01Der er
11 kommentarer og 1 løsning
Hvordan overføres et javascript array til en ASP-side
Jeg har et javascript array[?][?] på en side. Dette array opdateres løbende efterhånden som brugeren opretter, tilføjer eller sletter elementer i et <select><option>. Mit problem er nu at få overført javascript arrayet til en ny ASP-side. Fra denne nye side skal opslysninger fra javascript arrayet enten indlæses i en database eller i en Session. Håber der er en der kan hjælpe.
kan du ikke bare have en listbox med multiselect? så kan du hente de valgte værdier ud vha. request.form objektet i ASP? Sådan ville jeg nok gøre det... Du kan vel også lave et slags loop i javascript der lave en querystring på følgende måde: data.asp?SelectData=værdi1,værdi2,værdi3,værdi4,osv,osv På ASP siden kan du så bruge: arrTilmeldte = Split(Request.QueryString("SelectData"), ",") til at hente dataerne og ligge dem ind i et array.
arrayet 'UndSpør' har et indhold, men hvorvidt 'undspoer' har et indholdt det er jo det jeg vil tjekke med det script du foreslog
Split(Request.QueryString("undspoer"), ",").
Spørgsmålet er derfor om der noget galt med min overførsels streng og måden at gøre det på jvf. onclick="location.href="onu.asp?undspoer="+UndSpør.toString();
Det script jeg gav dig er til at lægge evt. dataer ind i et array på asp siden så der er nemmere adgang. Prø at fjern den linie igen og skriv Response.Write Request.QueryString("undspoer") så kan du se om der er noget i variablen. En anden bemærking: Din UndSpoer skal både starte og slutte med et komma , . Ellers laver den fejl.
Jeg kan udskrive den overførte tekst ved Response.Write(Request.QueryString("undspoer")); men ikke ved brug af Split(Request.QueryString("undspoer"), ",") her kommer fejlen - Object expected
Men jeg ønsker jo også at submitte siden <FORM> jvf. <form name="form1" method="post" action="onu.asp"> ved brug af <input type="submit" name="Frem_onu2" onclick="location.href='onu.asp?undspoer='+UndSpør.toString();" value="Frem >>"> Jeg har prøvet at submitte formen både ved brug af 'post' og 'get' men jeg får stadig ikke mine oplysninger med over. Er der en måde hvorpå jeg evt. kan gøre brug af <input type="hidden" name="spgArray" value="? ">, jeg ved bare ikke hvordan jeg får placeret tekststrengen i 'value'. Håber du har et forslag
OK. Hvis jeg har forstået dig korrekt vil du have lad os sige 3 sider med spørgsmål. Efter hver side vil du gerne have svarene ført videre til næste side?
Nej, jeg har en side hvor alle de spørgsmål som jeg skal bruge bliver indtastet -> spørgsmålene opsamles i et javascript array -> når brugeren har indtastet alle spørgsmål -> klikker han på kanppen "Frem" -> denne side går så til den asp.side 'onu' hvor datane (spørgsmålene) så behandels.
Jeg har nu problemmer med at få overført javascript arrayet - som en del af den streng der overføres når sidens <Form> submit'tes.
Det er lykkedes mig at overfører arrayet som en tekststreng vedhjælp af følgende script der er placeret indenfor <Form>-tagget. <script language="javascript"> function tekst() { var tekst = ""; var komma = "," for (m=0; m<UndSpør.length; m++) { for (n=0; n<UndSpør[m].length; n++) { tekst = tekst + UndSpør[m][n]; if(m == UndSpør.length-1 && n == 1) { tekst = tekst; } else { tekst = tekst + komma; } } } return tekst; }
document.write("<input type='hidden' name='undspoer' value='" +tekst() +"'>"); </script> På ASP-siden kan jeg stadig ikke splitte den overførte tekst
Overførselsstrengen ser sådan ud når jeg udskriver den undspoer: 32,Din nationalitet,33,Uddannelses baggrund ?
Og den står sådan her i browserens adressefelt når den overføres via 'get' undspoer=32%2CDin+nationalitet%2C33%2CUddannelses+baggrund+%3F
Nu har jeg løsningen - på ASP-side skriver jeg følgende:
undspoer = Request.Form("undspoer"); //modtager html-streng tekst = Server.HTMLEncode(undspoer); //fra html-streng til ren tekststreng var pattern = /,/; spgArray = tekst.split(pattern); //fra streng med ',' til array uden
Hvis man så ønsker at udskrive arrayet, kan det gøres på følgende måde:
for (i=0; i< spgArray.length; i++) { Response.Write(spgArray[i] +"<br>") }
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.