logo
UR?
XML
Forms
DOM
SAX
WXT
Velkommen > Moduler >Forms
../../common/gfx/prev.gif ../../common/gfx/home.gif ../../common/gfx/next.gif

Forms

[ action ][ target ][ method ]

Hva:
Hvordan fange opp data fra en HTML-side

En vevside oppfattes i hovedsak som en framvisningsside, men ganske ofte ønsker vi å sende data fra vevsiden til tjeneren. I (X)HTML har vi en egen mekanisme for dette. Vi fyller inn data eller velger blandt muligheter på vevsiden og sender vår input ved å trykke på en knapp. Våre data sendes til tjeneren og behandles videre av et program, typisk et CGI-skript. Et eksempel:

Den HTML-koden som tar seg av dette ser slik ut:

    <form action="http://www.ia.hiof.no/~borres/cgi-bin/forms/std.py"
          method="get">
    <div>
        <input type="text" name="message"/>
        <input type="submit" value="Send"/>
    </div>
    </form>

Attributten action angir hvilket skript som skal motta dataene, get angir en av to måter å sende data på. Mer om dette senere. Vi ser videre at vi har to elementer inne i form-elementet: Et element for å skrive inn en tekst, og et element, submit, som er en knapp som utløser sending av data. Hvordan mottagerskriptene på tjeneren er bygd opp er ikke tema for denne modulen. Se CGI. Et skript sender et resultat tilbake til nettleseren, oftest i form av en html-side.

Logikken er altså at vi definerer en form og fyller den med så mange input-elementer vi ønsker. I tillegg til tekst-input kan vi ha radioknapper, sjekkbokser, skjulte elementer, passord, filer og mer generelle knapper. Vi ser litt på hver av disse i de følgende modulene.

Vi skal se litt på noen muligheter vi har med selve form-elementet. Du kan inspisere de Pythonskriptene som er brukt under referanser i disse form-modulene.

.

action

Attributten action er adressen til det skriptet som skal motta data fra formen.

.

target

Attributten target brukes akkurat som den brukes i HTML. Du kan angi hvilket vindu du vil ha resulatet fra skriptet presentert i. Dersom du bruker frames er dette en mulighet til styre resulater av skriptets behandling ut i en annen frame.

.

method

Hvilke overføringsmetoder vi kan bruke er bestem av den protokollen som kontrollerer dataoverføring mellom klient og tjener. Når det gjelder vanlig dataoverføring mellom en nettleser og et skript så er dette HTTP (Hyper Text Transfer Protocol). HTTP gir oss for vårt formål valget mellom to metoder, post og get.

get

get har begrensninger når det gjelder datavolumet, men har noen fordeler når det gjelder å hardkode parameterstyrte skript.

Anta at vi har en konstruksjon som eksempelet øverst på siden.

Hvis du skriver inn teksten hei, og trykker på send-knappen vil du se følgende i adressefeltet på nettleseren:

	http://www.ia.hiof.no/~borres/cgi-bin/forms/std.py?message=hei
	

Dersom vi hadde hatt flere datafelt som skulle overføres ville de ha kommet etter hverandre, adskilt med tegnet &, f.eks. slik:

	http://www.ia.hiof.no/~borres/cgi-bin/forms/std.py?message=hei&fra=bs
	

Vi kunne oppnådd den samme effekten av skriptet ved å skrive adressen med parameterlista direkte inn i nettleseren, eller ved å legge en link som her:

http://www.ia.hiof.no/~borres/cgi-bin/forms/std.py?message=hei

Metoden get har den fordelen at det er lett å rekonstruere en bestemt side, siden parametrene så og si inngår i adressen.

post

post viser ikke dataene som skal overføres eksplisitt, men kan ta større datamengder. Du kan prøve eksempelet nedenfor som er identisk med det forrige, bortsett fra at metoden er skiftet til post:

    <form action="http://www.ia.hiof.no/~borres/cgi-bin/forms/std.py"
          method="post">
        <div>
        <input type="text" name="message"/>
        <input type="submit" value="Send"/>
        </div>
    </form>
    
Referanser og eksempler:

W3C's beskrivelse av form-elementet i HTML: www.w3.org/TR/html4/interact/forms.html

Python skriptet som er brukt i denne modulen: std

En samleside for testing av forms: formtester.html

Produksjon, kontroll og vedlikehold:
Børre Stenseth, februar 2005

Markup og web fra Høgskolen i Østfold: http://www.ia.hiof.no/~borres/ml/

../../common/gfx/prev.gif ../../common/gfx/home.gif ../../common/gfx/next.gif
skjema popup

Valid XHTML 1.0 Strict
popup card
Bygget med WXT