Ajax progress bar
by Michele
Probabilmente avrete già trovato una libreria del genere su Internet, ma questa versione è proprio piccola e semplice da usare. L’ho realizzata utilizzando Prototype, la famosa libreria/framework che permette di velocizzare lo sviluppo JavaScript. La libreria in questione è stata realizzata per aggiungere la funzionalità di progress bar aggiornabile via Ajax ialle vostre applicazioni web ricche.
La libreria JavaScript è composta da appena 70 righe (di cui 25 sono di commenti
) ed è utilizzabile con estrema semplicità. Prima di tutto è necessario importarla dopo Prototype:
poi creare una istanza della classe AjaxProgressBar con tutti i parametri di configurazione:
<script type="text/javascript">
//<![CDATA[
var progress = new AjaxProgressBar("progress-bar", "bar", {
frequency: 5,
total: 1540,
url: "update.php"
});
progress.start();
//]]>
</script>
Il costruttore prevede tre parametri:
- id del div contenitore esterno (quello che disegna lo sfondo della progress bar)
- id del div contenitore interno (quello che disegna il progresso)
- array associativo contenente la lista dei parametri di configurazione
I parametri di configurazione sono i seguenti:
frequency– frequenza di aggiornamento (in secondi)total– totale da confrontare con il valore restituito dalle risposte Ajax, per calcolare la percentuale di progressourl– url delle richieste Ajax
La risposta alle richieste Ajax deve essere XML, ecco un esempio:
<?xml version="1.0" encoding="ISO-8859-1"?> <value>45</value>
I due div possono essere disegnati applicando i stili:
<style type="text/css">
#progress-bar {
width: 200px;
height: 19px;
background: url("aquabarright.gif");
background-position: right center;
}
#bar {
background: url("aquabarleft.gif");
width: 0%;
height: 100%;
}
</style>
Questo è il risultato grafico:

Modificando i stili dei due div è possibile avere un qualsiasi effetto grafico.
La libreria è scaricabile da qui: ajaxprogressbar.js – 3kb
Il pacchetto con tutti i file è scaricabile da qui: ajaxprogressbar.zip – 39kb
Commenti
[...] This Italian site gives some examples on how to get an AJAX status bar up and running on your site. The tutorial is not in english, so you will have to run it through a translator first. [...]
prima o poi usero` javascript dai
Sta diventando pericoloso parlare di Ajax e mettere tag “ajax”. Il mio blog è catalogato da Techorati e in poco più di due giorni due siti hanno recensito questa libreria come “l’ultima figata” che si può fare con Prototype. D’ora in poi bisogna stare attenti a quello che si scrive
[...] Esse post é baseado no Ajax progress bar. [...]
Black Bird | Blog » Archivio » Ajax progress bar
Qualcuno su Smarking ha salvato il tuo post fra i suoi bookmark.
[...] http://www.blackbirdblog.it/blog/archivio/2006/03/09/ajax-progress-bar/ [...]
Non funziona… esegue il primo step e poi si blocca… visto che sto scrivendo oltre un anno e mezzo dopo, la libreria ha avuto sviluppi? grazie e magnifico lavoro!!
Ha sempre funzionato, che browser hai e che versione di Prototype usi?
Ho provato a fare andare la barra su IIS 6.0 ma non funziona.Ho provato anche a scaricare l’ultima versione di prototype ( la 1.6 ) ma non è cambiato niente. Bisogna impostare qualche parametro particolare?
La tua soluzione è molto semplice e tecnicamente elegante. Pultroppo ci sono arrivato dopo varie ore di tentativi inconcludenti. Nell’implementarla dentro i miei script non riesco tuttavia a capire come agganciarla ad un concreto codice php. Come potrei fare per calcolare effettivamente l’avanzamento dell’upload da inserire entro update.php. Ho comunque voluto simulare l’avanzamento della barra prevedendo un ciclo che mi incrementa il valore di $value ad ogni accesso. Ho l’impressione che la chiamata per l’aggiornamento del parametro di avanzamento non avvenga. Ho lasciato i 5 sec di frequenza.
Qcuno mi puo indicare come procedere correttamente.
Grazie.
Stefano
Mi dispiace ma non saprei come potresti fare per calcolare l’avanzamento dell’upload in PHP. La mia libreria è stata concepita per essere utilizzata in qualsiasi caso, basta però conoscere l’avanzamento di un’azione.
ehm.. c’è un problema, non carica il filmato
Che tipo di errore ti da?
Ciao Michele,
Mi piace la tua progressbar, credo sia una vera figata pero quando l’ho provata per IE6 e IE7 non mi fa vedere l’incremento della barra, resta vuota fino alla fine anche se credo che il ajax funzione.
Hai controllato che funziona per IE6 e IE7?
In Firefox e altri funziona benissimo e ti ringrazio per quello!!!
l’anagrafica non viene inviata più.