logo
Progresjon
Velkommen > Moduler > AJAX >Progresjon
../../../common/gfx/prev.gif ../../../common/gfx/home.gif ../../../common/gfx/next.gif

Progress

... mens vi venter

Hva:
indikasjon av at vi venter på en AJAX-forespørsel

Når vi laster opp en helt ny side vil nettleseren med forskjellige mekanismer indikere en progresjon og i hvert fall i en viss utstrekning holde oss som brukere informert om hvordan vår forespørsel om en ny vevside går.

Når vi bruker AJAX får vi ingen slike indikasjoner. Vevsiden endrer seg ikke før forespørselen er fullført og nettleseren gir ingen indikasjoner på at noe er på gang. Det betyr at dersom vi gjør forespørsler som antas å ta litt tid, databaseoppslag, beregninger bruk av webservices eller hva det måtte være, så må vi selv ta ansvaret for å gi en form for "vente"-informasjon eller "ta det med ro jeg arbeider med saken"-indikasjon.

Vi kan løse dette på mange måter ved hjelp av Javacsript. Nedenfor er en enkel løsning som bruker animert GIF som indikator:

start
stop

0

I dette tilfellet starter og stopper vi progress indikatoren eksplisitt ved å klikke for start og stopp. Det er enkelt å knytte disse triggerne (startspin og stopspin) til de funksjonene i en AJAX-løsning som henholdsvis sender en forespørsel og mottar resultatet.

Det involverte Javascriptet ser slik ut:

  function stopspin(){
    eltShow=document.getElementById('showspin');
    eltWhat=document.getElementById('spin0FF');
    eltShow.innerHTML=eltWhat.innerHTML;
  }

  function startspin(){
    eltShow=document.getElementById('showspin');
    eltWhat=document.getElementById('spinON');
    eltShow.innerHTML=eltWhat.innerHTML;
  }

Den delen av HTML-koden på denne siden som er invovert i denne mekanismen ser slik ut:

<!-- starting the spintest -->
<div style="cursor:pointer" onclick="startspin()">start</div>

<!-- stop the spin test -->
<div style="cursor:pointer" onclick="stopspin()">stop</div>

<!-- spin position -->
<p id="showspin">
<image src="wait28_OFF.gif" alt ="0"/>
</p>

<!-- storing spin images the first is a placeholder with same size as the spinner -->
<div id="spin0FF" style="display:none"><image src="wait28_OFF.gif" alt ="0"/></div>
<div id="spinON" style="display:none"><image src="wait28.gif" alt ="1"/></div>
.

Et AJAX-eksempel

Du kan prøve et AJAX-eksempel som bruker mitt standardbibliotek med noen spinnervarianter nedenfor. Biblioteket ser slik ut:

+

Standard spinner implementert i biblioteket std.js

doRequest('http://www.ia.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','','result1','std')

Klikk her for å hente litt tekst

?


Hjemmlagd spinner: inspirert av MS-Windows load

doRequest('http://www.ia.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','','result2','spinbar.gif')

Klikk her for å hente litt tekst

?


Ingen spinner

doRequest('http://www.ia.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','','result3')

Klikk her for å hente litt tekst

?


Referanser og eksempler:

All koden er sitert på siden.

Produksjon, kontroll og vedlikehold:

B.Stenseth, juli 2006

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