Avatar billede lindsten Nybegynder
13. maj 2002 - 20:01 Der 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.
Avatar billede rxftp Nybegynder
13. maj 2002 - 22:05 #1
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.

Rock on,
rxFTP
Avatar billede lindsten Nybegynder
13. maj 2002 - 22:35 #2
Det array som jeg har oprettet i javascript hedder: UndSpør
Når brugen klikker sig videre til en ny side har afvikles følgende kode

onclick="location.href="onu.asp?undspoer="+UndSpør.toString();

på ASP-siden, skriver jeg i linie 339:

scriptArray = Split(Request.QueryString("undspoer"), ",");

men der opstår følgende fejl
Object expected /onu.asp, line 339

kan du se hvad jeg gør galt
Avatar billede rxftp Nybegynder
14. maj 2002 - 07:36 #3
Prøv at se om der er noget i undspoer. Hvis den er tom kan der opstå sådan en fejl.. ellers har jeg sq ikke hørt om den før...?

Rock on,
rxFTP
Avatar billede lindsten Nybegynder
14. maj 2002 - 09:50 #4
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();

Håber du kan hjælpe
Avatar billede rxftp Nybegynder
14. maj 2002 - 14:02 #5
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.

Rock on,
rxFTP
Avatar billede lindsten Nybegynder
14. maj 2002 - 15:31 #6
Jeg forstår ikke din kommentar om start og slut komma. Vil du vise et eksempel
Avatar billede lindsten Nybegynder
14. maj 2002 - 15:49 #7
Jeg har fundet ud af at jeg kan overføre arrayet som en tekststreng til min asp side onu.asp via onclick sålænge koden er som følger

<input type="button" name="Frem_onu2" onclick="location.href='onu.asp?
undspoer='+UndSpør.toString();" value="Frem >>">

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
Avatar billede rxftp Nybegynder
14. maj 2002 - 16:50 #8
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?
Avatar billede lindsten Nybegynder
15. maj 2002 - 06:48 #9
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.
Avatar billede lindsten Nybegynder
15. maj 2002 - 08:42 #10
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
Avatar billede lindsten Nybegynder
15. maj 2002 - 10:43 #11
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>")
}
Avatar billede lindsten Nybegynder
15. maj 2002 - 10:43 #12
giver derfor ingen point
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
Kurser inden for grundlæggende programmering

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