Avatar billede jensb Nybegynder
02. november 2002 - 15:51 Der er 13 kommentarer og
2 løsninger

Modtag fra Form (ikke ASP og PHP)

Hej

Jeg havde lovet at hjælpe en ven med at lave en simpel funktion hvor folk kan udfylde en form på en side, og når de så trykker submit skal der åbne en ny side hvor det de har udfyldt at sat pænt op på en side.

Jeg havde regnet med at lave det i ASP og der er det jo nemt nok. Men han har nu fundet ud af at serveren ikke understøtter ASP (og vist heller ikke PHP), så kan man lave det med noget der understøttes af alle servere?  Måske noget Javascript, eller kan det gøres i ren HTML?

Selve siden med formen kan jeg sagtens lave, men jeg mangler altså en funktion der kan samle informationerne op på den side man bliver sendt til via formen.

Nogen der kan hjælpe med det?

I ASP ville jeg først have samlet alle informationerne op og gemme  den i variable...eks:

navn = Request.Form("navn")
adresse = Request.Form("adresse")
osv...

Og disse variable ville jeg så kunne sætte ind hvor jeg nu har brug for dem i den almindelige HTML.  Hvordan kan man gøre noget lignende med Javascript eller andet sprog der virker på alle servere?
Avatar billede limemedia Nybegynder
02. november 2002 - 15:55 #1
Eksempel
http://ljweb.dyndns.org/test/jsparam.html?test=benni

Kode
<script language="JavaScript" type="text/javascript">
<!--
    function QueryString(key) {
        var value = null;
        for (var i=0;i<QueryString.keys.length;i++) {
            if (QueryString.keys[i]==key) {
                value = QueryString.values[i];
                break;
            }
        }
   
        return value;
    }
   
    QueryString.keys = new Array();
    QueryString.values = new Array();
   
    function QueryString_Parse() {
        var query = window.location.search.substring(1);
        var pairs = query.split("&");
   
        for (var i=0;i<pairs.length;i++) {
            var pos = pairs[i].indexOf('=');
            if (pos >= 0) {
                var argname = pairs[i].substring(0,pos);
                var value = pairs[i].substring(pos+1);
                QueryString.keys[QueryString.keys.length] = argname;
                QueryString.values[QueryString.values.length] = value;       
            }
        }
    }
   
    QueryString_Parse();
//-->
</script>

Test : <script language="JavaScript" type="text/javascript">document.write( QueryString("test") );</script>



/ Lars
www.ljweb.com
Avatar billede jensb Nybegynder
02. november 2002 - 15:57 #2
kigger på det...
Avatar billede jensb Nybegynder
02. november 2002 - 16:06 #3
Det virker fint  http://62.242.7.210/input2.htm

Men er det muligt at få den til ikke at lave + istedet for mellemrum?

Og så er den heller ikke så glad for Æ,Ø,Å

Så kan man putte noget replace-halløj ind i scriptet?
Avatar billede jensb Nybegynder
02. november 2002 - 16:09 #4
Og kan det virke med en POST form istedet for en GET ?  eller skal det gennem URL'en for at virke?
Avatar billede jakobandersen Nybegynder
02. november 2002 - 16:11 #5
Eller en lidt simplere udgave:

<script type="text/javascript">
URL = new String(document.URL);
split = URL.split("?");
URL = new String(split[1]);
split = URL.split("&");
getvar = new Object();
for(i=0; i < split.length; i++){
URL = new String(split[i]);
vaerdi = URL.split("=");
getvar[vaerdi[0]] = vaerdi[1];
}
</script>


Herefter bruger du blot:

getvar['varnavn']

for at hente en værdi ud.
Avatar billede jakobandersen Nybegynder
02. november 2002 - 16:12 #6
Der skal bruges GET, Javascript kan ikke aflæse post variabler
Avatar billede limemedia Nybegynder
02. november 2002 - 16:14 #7
i funktionen QueryString rettes return sætningen til
return unescape(value);

og ja, der skal bruget method="get"
Avatar billede jensb Nybegynder
02. november 2002 - 16:27 #8
Ok det er også fint nok med GET.

ljweb ->  Jep det hjalp på problemet med Æ,Ø,Å.  Men hvad med mellemrum er det muligt at få det rigtigt, eller vil der altid komme et + istedet for?

moonduck ->  kan ikke lige få dit til at virke, men det er nok fordi jeg aldrig har rodet med JavaScript før... jeg går ud fra at jeg skal skrive noget mere end blot getvar['varnavn'], men præcist hvad?  Jeg har prøvet med <script type="text/javascript">getvar['tlf']</script>  Men det synes jeg ikke hjalp på problemet
Avatar billede limemedia Nybegynder
02. november 2002 - 16:34 #9
læste lige lidt på emnet, følgende skulle virke

return unescape(value.replace('+',' '));

samme streng som før udskiftes
Avatar billede jensb Nybegynder
02. november 2002 - 16:44 #10
Dit svar er accepteret, men der er dog stadig problemer hvis man har mere end ét mellemrum i feltet... f.eks. adressefeltet "gadenavn husnummer etage" bliver til "gadenavn husnummer+etage"  det er altså kun det første mellemrum der bliver rigtigt.

Som sagt er dit svar accepteret da jeg ikke synes jeg kan forlange mere for 60 point.  Men hvis nu du skulle være blevet helt opslugt af emnet og ikke mener du kan få nattero før du har fundet en perfekt løsning, så vil jeg med glæde oprette et nyt spørgsmål med nogle flere point til dig.


tillægsspørgsmål? Ved du om der er grænser for hvormeget man kan sende gennem URL'EN?
Avatar billede jensb Nybegynder
02. november 2002 - 16:44 #11
Men foreløbig mange tak for hjælpen.
Avatar billede limemedia Nybegynder
02. november 2002 - 16:49 #12
jeg poster en optimeret version imorgen - jeg går nemlig i seng nu (sidder i +8 timer tidszone, så klokken er langt over midnat allerede)

takker for point

ad tillægsspørgsmålet, er det ikke 2048 tegn - kan ikke huske det
Avatar billede jensb Nybegynder
02. november 2002 - 16:55 #13
Nåh ja, du er jo i Japan...ja jeg har ikke lige haft tid (læs :penge) til at komme og besøge dig endnu, jvf: http://www.eksperten.dk/spm/94185  :-)

Men ihvertfald tak for hjælpen, og finder du en løsning på det sidste så er det rigtig lækkert...ellers må jeg jo bare lave formen lidt om, så adressen f.eks. er opdelt med seperat felt til husnummer.  Men jeg vil jo selvfølgelig helst have det perfekt, da folk jo også kan bo på en eller anden underlig gade som består af 3 ord
Avatar billede limemedia Nybegynder
03. november 2002 - 04:46 #14
ret return value'n igen til

while (value.indexOf('+') > 1) value = value.replace('+',' ');
return unescape(value);

så virker det.

ps. gammelt spm du pludselig graver frem *g* sjovt at læse igen
Avatar billede jensb Nybegynder
03. november 2002 - 12:46 #15
Tak for hjælpen, det virker perfekt nu :-)

her er lidt ekstra for indsatsen : http://www.eksperten.dk/spm/278727
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