Avatar billede fidusen Nybegynder
11. maj 2001 - 21:35 Der er 7 kommentarer og
1 løsning

Brug variabler fra URL


Hej Eksperter...

Jeg har to sider: hovedside og popup.
Min hovedside får kaldt popup\'en med f.eks. denne URL:

Popup.html?Isrc=01&Itxt=Tekst

Hvordan bruger jeg de to variable i et script på popupsiden?
F.eks. ved at lave den om til en \"normal\" JavaScript variabel...

-FiDuSeN-
Avatar billede jakoba Nybegynder
11. maj 2001 - 21:46 #1
<script language=\'javascript\'>

values = new Array();  // et array til dine url-parametre

var urlEnd = document.URL.indexOf(\'?\');
if (urlEnd != -1){
      var params = document.URL.substring(urlEnd+1);          // hele strengen fra ? og frem
      params = params.split(\'&\');          // opdel til et array på \"&\"
      for(var i=0; params.lengtht>i; i++) {
              params[i]  = params[i].split(\'=\');        // opdel til underarrays (navn,value) på \"=\"
              values[params[i][0]] = unescape( params[i][1] );  // konverter %nn koder i value til chars
      }
};

</script>

herefter kan du slå dine variavle op i arrayet values med fx
var minIsrc = values[\"Isrc\"];
var minItxt = values[\"Itxt\"];

mvh JakobA
Avatar billede fidusen Nybegynder
12. maj 2001 - 00:11 #2

Det ser rigtig godt ud, men det virker ikke...

Jeg er kommet frem til at fejlen er ved, at document.URL er \"(sti)/popup.html\" selvom jeg har kaldt den med dette:
<A href=\"Popup.html?Isrc=01&Iend=jpg&Itxt=Tekst\">
Popup</A>

Hvorfor nu det?

Jeg testede det ved alert(document.URL)... :o)
Avatar billede jakoba Nybegynder
12. maj 2001 - 00:26 #3
Det du finder i  document.url  (og også i location.href) er altis den fuldstændige url. (browseren udvider med default eller den base du har gevet.)

Når den slags parameteroverførsel testes lokalt vil nogle versioner af IE ikke være med og stryger ?... parametrene, eller giver fejl. Samme side hentet fra en server virker fint. Hvis adresselinien starter med \"http:\" skulle det virke. hvis den starter med et drevbogstav kan det være det der er galt.

Prøv evt at paste hele din adresselinie ind her.

mvh JakobA
Avatar billede fidusen Nybegynder
12. maj 2001 - 12:06 #4

Jeg kan ikke få det til at virke...
Jeg har fået kaldt siden med denne URL:
\"Popup.html?Isrc=01&Iend=jpg&Itxt=Tekst\"

Jeg har testet dit script igennem og fundet ud af at der ingen fejl er indtil løkken begynder. Jeg forstod ikke helt selve løkkens script, så den har jeg ikke testet. I hvert fald kan jeg ikke udtrække værdierne efter løkken. (Jeg har forsøgt på to måder)

if (urlEnd != -1){
      var params = document.URL.substring(urlEnd+1);        // hele strengen fra ? og frem
      params = params.split(\'&\');                // opdel til et array på \"&\"
      for(var i=0; params.lengtht>i; i++) {
              params[i]  = params[i].split(\'=\');        // opdel til underarrays (navn,value) på \"=\"
              values[params[i][0]] = unescape( params[i][1] );    // konverter %nn koder i value til chars
      }

var imgSrc = values[\"Isrc\"];
imgEnd = values[\"Iend\"];
imgTxt = values[\"Itxt\"];

alert(imgSrc + \' og \' + imgEnd);

Denne alert returnerer:
undefined og undefined

Der må altså være en fejl i løkken et sted eller i udtrækningen af variablernes værdier.

Er der nogen, der ved hvad der er galt?

-FiDuSeN-
Avatar billede jakoba Nybegynder
12. maj 2001 - 12:43 #5
min fejl. jeg havde sat et t formeget i params.length
      for(var i=0; params.length>i; i++) {

fuldt eksempel på
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp72036.html
Avatar billede fidusen Nybegynder
12. maj 2001 - 17:25 #6

Nu virker det hele endelig!
Tusind tak for hjælpen, JakobA!

Du får de 15 point, men jeg synes du burde have nogle flere, da det var mere kompliceret end jeg troede.

Nå, du får i hvert fald noget sreet respect :-)

-FiDuSeN-

PS: Det er et fedt \"development lab\" du har til Ekspertens spørgsmål :-)
Avatar billede jakoba Nybegynder
12. maj 2001 - 18:28 #7
Så sku du bare se erikjacobsens :)
Avatar billede olebole Juniormester
13. maj 2001 - 16:52 #8
<ole>
For en anden gangs skyld hedder strengen fra og med \'?\' i en URL: location.search.
Hvis du er på en side, hvor der i adresselinien står:
  http://www.et_domaene.dk?noget=noget_andet
...vil alert(location.search) give en alert med teksten: \"?noget=noget_andet\"
Ganske anvendeligt  :o)
/mvh
</bole>
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