webForumDet fria alternativet

Skicka ankare med header?

14 svar · 441 visningar · startad av Mungo

MungoMedlem sedan jan. 2000372 inlägg
#1

Jo,
jag skulle behöva skicka med ett ankare till en URL i en header("Location: ") jag gör, men det funkar inte av nån anledning, är det nån som har nån idé om varför?

header("Location: /hej.php?oj=1#id=2");
blir bara:
/hej.php?oj=1

och
header("Location: " . urlencode("/hej.php?oj=1#id=2"));
blir bara soppa, sidan laddas inte alls...

Hjälp?

Tackar!

FoJjMedlem sedan maj 200178 inlägg
#2

Ska det inte vara....

header("Location: " . urlencode("/hej.php?oj=1&id=2"));

MungoMedlem sedan jan. 2000372 inlägg
#3

Njae, det ska det inte. Men jag skrev ändå fel, det ska ju förstås vara:

header("Location: " . urlencode("/hej.php?oj=1#id2"));

"id2" är alltså ett ankare i HTML-koden på sidan "hej.php".

ThomsonMedlem sedan feb. 200177 inlägg
#4

Javascript

Testa detta:

$moveform ="<script language='javascript'> parent.location.href='hej.php?oj=1#id2';</script>";

echo $moveform;

exit();

MungoMedlem sedan jan. 2000372 inlägg
#5

Jamen det är klart att det funkar med Javascript, men det var ju inte frågan! Jag vill undvika att skicka webläsaren till ett extra ställe, det skulle vara tusen gånger bättre att skicka den direkt till rätt plats. Frågan är ju varför det inte funkar att skicka med ankare i header().

ThomsonMedlem sedan feb. 200177 inlägg
#6

Ok!

Ifall du kommer att lösa ditt lilla problem med location och ankaret så kommer du likt väl att ladda om sidan...

MungoMedlem sedan jan. 2000372 inlägg
#7

Njae...? Om jag kan skicka en Location som leder direkt till rätt ställe - med ankare - så behöver jag bara ladda den sidan.

Istället för att först ladda en sida som innehåller att javascript som laddar en annan sida. = 2 sidor...

ThomsonMedlem sedan feb. 200177 inlägg
#8

Har du testat det jag föreslog?

Den kodsnitten gör exakt samma sak
som header("Location ...").

Det är bara hej.php som behöver laddas om, rätta mig om jag har fel...

MatteMedlem sedan aug. 20002 975 inlägg
#9

Testade lite.

Och för mig fungerar detta:

header("Location: /hej.php?oj=1#id2");

Och även detta fungerar:

header("Location: /hej.php?".urlencode("oj=1")."#id2");

Använder också helst header("Location: ") och förstår varför.

MungoMedlem sedan jan. 2000372 inlägg
#10

Thomson: Du har fel. :) Det är rätt enkelt. En header("Location:") laddar inget dokument utan skriver ut en HTTP-header som talar om för webläsaren att dokumentet ligger på ett annat ställe. Därför behöver man aldrig ladda nån HTML eller nåt Javascript, och man slipper "hoppa" en extra gång. Testa själv! Med ditt exempel måste man först ladda en sida som innehåller ditt Javascript, som sen i sin tur laddar den sida jag verkligen vill till. Du får två stycken "klick" i Internet Explorer eftersom det blir två dokument som laddas. Fult, tycker jag!

Matte: Konstigt. När jag försöker försvinner helt enkelt "#"-tecknet och allt som står efter. Jag måste testa lite mer, men det kanske kan bero på webläsare? Själv använder jag MSIE 6 under WinXP. Vad använder du?

MatteMedlem sedan aug. 20002 975 inlägg
#11

MSIE 6 under WinXP

BromsMedlem sedan sep. 2002188 inlägg
#12

Testade lite jag med, och både

header("Location: /hej.php?oj=1#id2");

och

header("Location: /hej.php?".urlencode("oj=1")."#id2");

som Matte skrev, funkar fint :\ Fattar inte varti felet ligger..
men lycka till iaf..

ThomsonMedlem sedan feb. 200177 inlägg
#13

Tack Mungo...

Ok. Är det så det funkar. Hade visst inte fattat det där...

Tack tack...

MungoMedlem sedan jan. 2000372 inlägg
#14

När ni säger att det funkar, menar ni då att ankaret verkligen kommer med till nästa sida också, eller bara att sidan laddas som den ska?

MatteMedlem sedan aug. 20002 975 inlägg
#15

När sidan laddas så går den till ankaret.

136 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)