Progresjon
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:
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 prototype [1] . Den involverte koden er slik:
// relies on jquery
function goGet(address,targetNode,spinner){
if(spinner!=null)
$('#'+targetNode).html('<img src="'+spinner+'" alt=" "/>');
$.ajax({
url:address,
success:function(data)
{
$('#'+targetNode).html(data);
},
error:function(data)
{
$('#'+targetNode).html("Could not access content");
}
});
}
Vanlig spinner
goGet('http://www.it.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','result1','wait28.gif')
?
Hjemmlagd spinner: inspirert av MS-Windows load
goGet('http://www.it.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','result2','spinbar.gif')
?
Ingen spinner
goGet('http://www.it.hiof.no/~borres/cgi-bin/ajaxtest/waiter.py','result3',null)
?