Avatar billede power_t Nybegynder
13. september 2005 - 11:13 Der er 13 kommentarer og
3 løsninger

Lave sessions variabler fra javascript variabler

Jeg har dette script, som redirecter til en given URL afhængig af skærmbredde:

<script language="JavaScript">
if (window.screen.width == 1280) {
URL = "http://www.eksperten.dk";
window.location = URL; }
</script>

Kan man erklære en sessionsvariabel i ASP ud fra variablen i ovenstående script?
Jeg har set et eksempel hvor javascript variablen gemmes i en cookie, og derefter læses i ASP, men jeg vil gerne undgå at skulle anvende cookies til dette.
Avatar billede busschou Praktikant
13. september 2005 - 11:17 #1
tja idet du redirecter til side1.asp, så ved du jo at variablen er "side1" og idet du redirecter til side2.asp så ved du jo at variablen er "side2" eller skærmstørrelsen hvis det er den variabel du mener?
I din kode på side1.asp og side2.asp laver du jo så bare en session direkte ud fra det..burde være lige til
Avatar billede power_t Nybegynder
13. september 2005 - 11:18 #2
Jo tak, men det virker lidt besværligt. Ville være nemmers at kunne erklære en variabel uden at skulle redirecte til forskellige sider
Avatar billede ldanielsen Nybegynder
13. september 2005 - 11:44 #3
Javascript foregår (som du bruger det) i browservinduet. ASP (og dermed Session) foregår på serveren. Derfor kan en værdi fra et javascript ikke overføres til en Sessionvariabel på andre måder end ved at sende besked til serveren. Det foregår ved at kalde en asp-side, for eksempel med en querystring, eller ved at submitte en form. Evt. kalder man blot en bestemt side.

Det kan ikke blive mindre besværligt end det, men du er bestemt ikke den første der har spurgt om det.
Avatar billede busschou Praktikant
13. september 2005 - 14:34 #4
power_t >> som jeg læser dit javascript, så redirecter det til en asp side eller tager jeg fejl? I og med at du skal ned på serveren for at lave en session, så er det mest nærliggende da at lave den på den side som du kalder i javascriptet
Det er det i al fald i mine øjne
---
Men måske du skulle uddybe hvad det er du ønsker der skal ske, hvilke informationer det er du ønsker gemt?
Avatar billede power_t Nybegynder
13. september 2005 - 16:09 #5
Jeg vil gerne gemme en variabel (session), som jeg kan kalde nårsomhelst.
Den skal bruges til at vise indholdet alt efter brugeres skærmopløsning.
F.eks. hvis brugeren kører 1280x1024 vil layout være på en måde, og hvis 800x600, så på en anden måde.
Jeg vil bare helst undgå at anvende flere filer, f.eks. at skulle redirecte til forskellige filer alt efter skærmopløsning.
Derfor var en variabel i ASP en nem måde at omgå dette på.
Avatar billede busschou Praktikant
13. september 2005 - 16:27 #6
ok, hvis du i javascript aflæser skærmstørrelsen så skal du jo så blot een gang derefter gemme sessionen
Hvis du har en index side som tjekker skærmopløsingen og derefter sender til enten index1024.asp eller index800.asp så kan du på de to asp sider sætte sessionen.
I og med din index side så ikke gør andet end redirecte så går der næsten ingen tid, og i og med at din fx index1024.asp registrerer en session("skaerm") = 1024 , ja så kan du på resten af siderne blot læse den session
Avatar billede power_t Nybegynder
14. september 2005 - 09:53 #7
Men så skal jeg stadig bruge redirect - det var det jeg ville undgå )-:
Når javascript læser screen.width, kan denne variabel da ikke på samme side sættes som en session i ASP?
Avatar billede busschou Praktikant
14. september 2005 - 10:35 #8
nej javascript kører på klienten, altså hos den enkeltes computer, og det kører i øvrigt kun hvis man ikke har slået javascript fra i browseren - så det tilfælde bør du også have i mente
Asp kører kun på serveren og derfor kan asp ikke genkende din skærmopløsning
Sessioner er noget der håndteres på serveren hvad enten man bruger asp eller php eller noget tredie
Ergo kan du få skærmstørrelsen i javascript, men for at gemme den skal du ned på serveren, og for at komme ned på serveren efter dit javascript er eksekveret så skal du lave en postback af en slags, fx en redirect
---
En anden mere optimal løsning er at undlade at lave sit design afhængig af skærmstørrelse men gøre det dynamisk så det selv tilpasser sig skærmen
Hvis du aflæser selve skærmens størrelse siger det jo intet om hvorvidt man bruger windows og har en startknap i bunden som fylder, eller om man har en status linje, eller en ekstra søgebar, eller måske ude til venstre har alle sine bookmarks som en del har.
Avatar billede tsunami Nybegynder
16. september 2005 - 17:45 #9
Du kunne også gøre det ved hjælp af en skjult IFRAME som loader ved sidens start og får tilført en variable ved hjælp af URL'en....

men det ved jeg ikke om er får mærkeligt at gøre på den måde hehe
Avatar billede ldanielsen Nybegynder
16. september 2005 - 17:50 #10
Du kan jo sætte en cookie i stedet for. De kan læses både client- og serverside.
Avatar billede tsunami Nybegynder
16. september 2005 - 20:40 #11
ldanielsen << Prøv lige at læse hele spørgsmålet igennem :p
Avatar billede ldanielsen Nybegynder
17. september 2005 - 12:50 #12
Ja, men jeg kan ikke se hvorfor cookies ikke skulle kunne bruges.
Avatar billede power_t Nybegynder
21. september 2005 - 08:47 #13
Jeg kan forstå at det ikke bliver enklere, så jeg må nøjes med at lave en redirect og sætte en session inden jeg læser variablen ud igen...
Avatar billede ldanielsen Nybegynder
21. september 2005 - 09:02 #14
OK, held og lykke med det
Avatar billede busschou Praktikant
21. september 2005 - 09:18 #15
ok ved ikke om du ønsker et svar ? :o)
Avatar billede power_t Nybegynder
21. september 2005 - 09:28 #16
Jo takker..
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