Avatar billede nightowl24 Nybegynder
24. maj 2006 - 09:36 Der er 17 kommentarer og
2 løsninger

Problem med document.location og location.reload

Jeg har et system hvor jeg kalder et ASP-script ved brug af javascript. FX.

<input type="button" value="Tryk her" onClick="document.location = 'script.asp'"

Desuden er mit site bygget op ved brug af iframes og når scriptet er udført skal der hele siden reloades, som jeg gør således:

<input type="button" value="Tryk her" onClick="document.location = 'script.asp';top.location.reload();"

Det virker sådan set fint på min egen maskine, men tester jeg på serveren hvor sitet skal ligge sker det med mellemrum at scriptet aldrig bliver kørt. Nogen der kan forklare mig hvordan det kan være? Eller komme med en bedre metode til at løse dette problem.

/Nightowl
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 09:40 #1
Har du prøvet at køre top.location.reload(); FØR document.location = 'script.asp' ?

Lige nu vil den jo redirecte dig først, og så slet ikke køre top.location.reload ;)
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 09:48 #2
Den kører faktisk top.location.reload og jeg har prøvet at bytte rundt. Det bliver det værre af.
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 09:50 #3
Hvordan kan det blive værrere af at bytte om, når det er det enste logiske ? Derudover er javascript clientside, så der er ingen forskel om det er på din server eller ej.

Har du testet med flere browsere ? Og er din kode valid?
Avatar billede softspot Forsker
24. maj 2006 - 09:52 #4
Problemet er nok at med top.location.reload indlæser du den side som denne kode ligger i og når måske derfor at trække tæppet væk under dine egne fødder. Hvis du udfører document.location = 'script.asp' opnår du måske det samme - bare med modsat fortegn.

Hvad er det helt præcis dette skal bruges til, for det skal nok løses på en anden måde...
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 09:54 #5
"Hvad er det helt præcis dette skal bruges til, for det skal nok løses på en anden måde..."

også kendt som "Vi vil se noget mere kode" , igen kendt som, "post alt din html , asp og javascript"
Avatar billede softspot Forsker
24. maj 2006 - 09:57 #6
Ikke nødvendigvis en korrekt fortolkning af det spørgsmål tdafoobar. Det er ikke sikkert at koden fortæller hvad nightowl24 vil (den fortæller hvad han gør, men det er ikke nødvendigvis det samme :)).
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 10:01 #7
Jeg har en lille shop, hvor varene vises på en liste i én iframe og kurven vises i en anden iframe. Når et antal af en given vare indtastes og der trykkes på knappen skal asp-scriptet afvikles og derefter siden opdateres for at kurven også bliver det. Det er ikke tilstrækkeligt kun at opdatere iframen med kurven da der er andre ting på sitet der kan dukke op afhængigt at det man har tilføjet kurven.
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 10:04 #8
ahh, men skal du så ikke afvikle noget asp kode først ?

<%

' din nuværende asp kode, som vel opdatere en database eller session

Response.Write('<script>top.location.reload()</script')
Response.Redirect('script.ask')

%>
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 10:05 #9
ehh, stryg den Response.Redirect('script.ask') ;) den vil ikke virke, brug javascript versionen istedet.
Avatar billede softspot Forsker
24. maj 2006 - 10:09 #10
Det kunne lyde som om du kunne bruge en iframe mere (f.eks. inde i varelisten). Denne iframe kan du så sende dit request til og når den iframe's onload-event trigger, kan du genindlæse top. Du har muligvis behov for en styrevariabel, der angiver om det er et "bestilt" onload-event den nye iframe rejser eller om det er første onload (jeg er ikke helt sikker på at en iframe smider et onload-event hvis src er tom)...

Alternativet kunne være at bruge et HttpRequest, men det introducerer også nogle begrænsninger i hvilke klienter du understøtter...
Avatar billede softspot Forsker
24. maj 2006 - 10:10 #11
...eller du kan gøre som tdafoobar siger ;-)
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 10:20 #12
Har faktisk prøvet denne metode i mit aspscript uden held.
Response.Write('<script>top.location.reload()</script')

men fjernede så min redirect og nu er den vist ved at være der. Problemet er at der skal nogle parametre med tilbage, men det leger jeg lige lidt med.
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 10:26 #13
Det virker nu, smid nogle svar.
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 10:29 #14
noget fra mig her.

Forresten ville et moderne web 2.0 løsning at bruge noget overdrevent fancy AJAX til dette :) som softspot sagde, hehe.

Men helt ærlig.. nej.
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 10:30 #15
Hvad er AJAX?
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 10:31 #16
rengøringsmiddel ! sådan noget jeg mangler i min lejlighed lige nu.

Se http://en.wikipedia.org/wiki/AJAX for mere info.

Pratisk talt tillader det dig at kalde dit ASP script med en række argumenter enten POST eller GET, uden at updatere siden.
Avatar billede nightowl24 Nybegynder
24. maj 2006 - 10:34 #17
ahh rengøringsmiddel, det har jeg vist hørt om :)
Avatar billede softspot Forsker
24. maj 2006 - 10:53 #18
...også et svar herfra (hvis du skal bruge det) :)
Avatar billede softspot Forsker
24. maj 2006 - 11:21 #19
Tak for 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
Vi tilbyder markedets bedste kurser inden for webudvikling

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