Avatar billede jespera Nybegynder
01. april 2004 - 11:17 Der er 27 kommentarer og
1 løsning

Hvordan fanger jeg alt i en Querystring ?

Hej Alle

Jeg har en querystring som jeg gerne vil ha pareset. F.eks.

www.url.dk?name=test&email=dr@dr.dk

Hvordan får jeg så sat i de værdier og smidt ned i nogle hidden fields

<input type='hidden' name='name' value='VÆRDI FRA QUERYSTRING'>

På forhånd tak
Avatar billede bamzen Nybegynder
01. april 2004 - 13:07 #1
din query string kan du nå med

document.location.search

så hvis vi laver noget kode ala


qstring = document.location.search
params = qstring.split("&")

myvalues = new Array()

for(i=0;i<params.length;i++){
tmp = params[i].split("=")
tmp2 = tmp[0]
myvalues[tmp2] = tmp[1]
}

så burde du efterfølgende kunne sige

document.forms[0].myfield.value=myvalues["name"]
Avatar billede jespera Nybegynder
02. april 2004 - 09:18 #2
Hmm syntes ikke det virker, hvad kan der være galt...
Avatar billede jespera Nybegynder
02. april 2004 - 10:41 #3
den vil ikke udskrive værdien i et hiddefield men gerne i et text field...Håber du kan hjælpen
Avatar billede jespera Nybegynder
02. april 2004 - 10:54 #4
Har fundet en anden løsning som parser korrekt men her er det samme problem stilling jeg kan ikke få værdier ned i et hidden field:

//
<script language='javascript'>

var urlEnd = document.URL.indexOf('?');
var values = new Array();
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.length>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 name = values["name"];
document.write("<input type='text' name='name' value='"+name+"'>");
document.write("<input type='hidden' name='name1' value='"+name+"'>");
// --> </script>
Avatar billede jespera Nybegynder
02. april 2004 - 19:04 #5
Er der ikke nogen der har et bud ?
Avatar billede roenving Novice
02. april 2004 - 19:09 #6
Hvordan ved du, at den ikke har puttet værdien i den hidden-input ?-)
Avatar billede jespera Nybegynder
02. april 2004 - 19:12 #7
den skriver den ikke i kode !
Avatar billede roenving Novice
02. april 2004 - 19:19 #8
Hvaffen kode ?-)
Avatar billede jespera Nybegynder
02. april 2004 - 19:23 #9
hehe ovenstående kode. Postet kl. 10:54:50.

Den udskriver værdien i et textfield, men hvad med hidden ?
Hvordan kan jeg se om værdien af navnet i mit hidden field. Normal når det er asp kan jeg vha. request.querystring("name") sætte værdien i mit hidden og herefter se det i kildekode ...

Håber du forstår
Avatar billede roenving Novice
02. april 2004 - 19:33 #10
Ja, men når du skriver det onload vil den kode, som skriver det stå i kildekoden, hvis du kigger i Vis kilde ...

Prøv f.eks. at sætte en onload="alert(document.DITFORMNAVN.name1.value);" ind i dit body-tag !-)
Avatar billede jespera Nybegynder
02. april 2004 - 19:55 #11
hmm den sætter da ikke nogen værdi i kildekoden endnu?. Tror måske jeg har misforstået dit svar

Sådan ser koden ud indtil videre:
<html>
<head>
<script language='javascript'>
var urlEnd = document.URL.indexOf('?');
var values = new Array();
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.length>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 name1 = values["name"];
// -->
</script>
</head>
<body onload="alert(document.frm.name1.value);">
<form name="frm" method="post" action="">
  <input type="hidden" name="name1" value="">
</form>
</body>
</html>
Avatar billede jespera Nybegynder
02. april 2004 - 19:56 #12
og jeg kalder så site med www.url.dk/test.html?name=jespera
Avatar billede roenving Novice
02. april 2004 - 19:58 #13
<html>
<head><title></title>
</head>
<body onload="alert(document.frm.name1.value);">
<form name="frm" method="post" action="">
<script language='javascript'>
var urlEnd = document.URL.indexOf('?');
var values = new Array();
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.length>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
  }
};

document.write('<input type="hidden" name="name1" value="'+values["name"]+'">';
// -->
</script>

</form>
</body>
</html>
Avatar billede jespera Nybegynder
02. april 2004 - 20:02 #14
Den siger fejl..

document.frm.name1.value er null eller ikke et objekt
Avatar billede roenving Novice
02. april 2004 - 20:08 #15
Hov, jeg glemte også en ) ...

document.write('<input type="hidden" name="name1" value="'+values["name"]+'">');
Avatar billede jespera Nybegynder
02. april 2004 - 20:11 #16
Jamen nu skriver den fint jespera i en alert boks men der står ikke jespera i hiddenfield (value)..??
Avatar billede roenving Novice
02. april 2004 - 20:19 #17
Jo, der står stadig den kode, som skriver, men prøv at submitte formen, så finder du værdien i feltet ...
Avatar billede jespera Nybegynder
02. april 2004 - 20:34 #18
hmm okay men hvordan kan det være ?  Har prøvet at submitte formen men den viser ikke noget. Hverken ved Post el. Get
Avatar billede roenving Novice
02. april 2004 - 20:38 #19
Hvordan modtager du den submittede form ?-)
Avatar billede jespera Nybegynder
02. april 2004 - 20:38 #20
jo den viser noget....sorry....
Avatar billede jespera Nybegynder
02. april 2004 - 20:40 #21
nå men hvorfor kan man ikke se det i kildekoden (value) og behøver jeg at have onload på for hver parameter i querystring
Avatar billede roenving Novice
02. april 2004 - 20:52 #22
Kildekoden viser det browseren modtager fra serveren, så hvis du on-the-fly genererer noget, vil det selvsagt ikke findes i koden ...

Det kommer an på, hvad du vil, normalt ville jeg lave en funktion, som aflæste querystring, og så udfyldte de felter, som passede til:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hent feltværdier fra url</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/484575">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function hentFelter(){
  q = location.search;
  if(!q)return;
  f = document.minForm;
  q = q.substring(1).split("&");
  for(i=0;q.length>i;i++){
    q[i] = q[i].split("=");
    if(f.elements[q[i][0]])f.elements[q[i][0]].value = unescape(q[i][1]);
  }
}
</script>
</head>
<body onload="hentFelter();">

<br>
<form id="minForm" name="minForm">
<input id="minInput" name="minInput" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">
<textarea name="mitTextarea" id="mitTextarea" cols="40" rows="5"></textarea>
</form>

</body>

</html>
Avatar billede jespera Nybegynder
02. april 2004 - 21:07 #23
Ja det kan jeg godt se. Men er det her så ikke godt nok eller ville du med din erfaring omstrukturere det og hvis evt. hvordan.

Tak for din hjælp så langt. Det er simpelhen bare perfekt :-)

HUSK LIGE AT LÆG ET SVAR.....

<html>
<head>
<title></title>
<script language='javascript'>
var urlEnd = document.URL.indexOf('?');
var values = new Array();
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.length>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>

</head>
<body>
<form name="frm" method="get" action="opsamling.asp">
  <input type="submit" name="Submit" value="Submit">
  <input name="test" type="hidden" value="25">
<script language='javascript'>
document.write('<input type="hidden" name="name1" value="'+values["name"]+'">');
document.write('<input type="hidden" name="phone" value="'+values["phone"]+'">');
</script>
</form>
</body>
</html>
Avatar billede roenving Novice
02. april 2004 - 21:18 #24
Problemet med at gøre det på den måde (altså direkte at skrive værdien !-) er, at den vil have en værdi under alle omstændigheder, nemlig værdien 'undefined', hvis der ikke kommer noget fra url'en ...

Der er den metode, jeg anviser, mere direkte, for den skriver nemlig kun noget i et felt, hvis der er et sammenfald af et feltnavn og en querystring-parameter !-)

-- men ellers handler det vist om programmeringsstil, jeg ville til enhver tid foretrække det, jeg har vist !-)

-- og velbekomme '-)
Avatar billede jespera Nybegynder
02. april 2004 - 21:22 #25
Alle tiders...Lige et quick spg. Hvad gør:

onfocus="if(this.value==this.defaultValue)this.value='';" 'onblur="if(this.value=='')this.value=this.defaultValue

Takker og godweekend
Avatar billede roenving Novice
02. april 2004 - 21:31 #26
Den fjerner en default oplysende tekst fra et tekst-felt ved focus, til brug for lettere navigation når brugere skal indtaste både navn, navn, navn, adresse, adresse, adresse og adresse ...

-- altså f.eks. 3 felter med fornavn, efternavn og nickname i hver sin linje, så to felter med vejnavn og nummer i en linje og to felter med postnr. og -by i en linje ...

Men for at lette yderligere flytten frem og tilbage sætter den hjælpeteksten tilbage, hvis der ikke skrives i feltet ...

-- der er et sted, hvor det er farligt at bruge det, nemlig hvis du påserveren giver værdier til felter, for så vil det være defaultValue, som man så ikke kan rette i !-)

-- og i helt lige måde !-)
Avatar billede jespera Nybegynder
02. april 2004 - 21:34 #27
Tak......
Avatar billede roenving Novice
02. april 2004 - 21:40 #28
-- og jeg takker for points ;~}
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