Flatnuke loves AJAX

Flatnuke loves AJAX

13/07/2007 2 minutes

Si legge su Wikipedia: l'usabilità è definita dall'ISO (International Standard Organization), come l'efficacia, l'efficienza e la soddisfazione con le quali determinati utenti raggiungono determinati obiettivi in determinati contesti.
Flatnuke sta recentemente facendo notevoli sforzi per migliorare la propria struttura ed il proprio codice in questo senso, sia aderendo il più possibile ai vari standard W3C, sia implementando o riscrivendo parti di software per adeguarlo a questa necessità; una delle vie più interessanti a livello tecnologico, consiste nell'utilizzo di AJAX (Asynchronous JavaScript and XML), una delle novità più apprezzate di questo famoso web 2.0.
A partire dalla versione 2.6, Flatnuke include la libreria AHAH (Asychronous HTML and HTTP): estremamente leggera, rappresenta un ottimo strumento per avere gli stessi risultati della libreria standard AJAX, ma con il vantaggio che il suo utilizzo risulta molto più semplice. AHAH è a tutti gli effetti una tecnica che permette, tramite l'utilizzo di semplici chiamate asincrone, di aggiornare in modo dinamico porzioni delle proprie pagine web.

Vediamone insieme l'utilizzo!

(continua...)

Elaborazione dati con variabile GET
Supponiamo di avere una pagina web in cui è presente un link: vogliamo che, quando lo clicchiamo, compaia sotto di esso un semplice avviso senza che venga aggiornata l'intera pagina.
Prima di tutto scriviamo il nostro link:

<a href="javascript:completeAHAH.ahah('ajaxtest.php?var_get=hello_get!','target_get','0','GET');">Link</a>

Al di sotto del nostro link, inseriamo l'oggetto DIV che andrà a contenere i risultati della chiamata:

<div id="target_get"></div>

Spiegazioni: la funzione AHAH richiamata è completeAHAH.ahah, ed i relativi parametri sono:
1. pagina che si occuperà di elaborare i nostri dati (ovviamente con la valorizzazione della nostra variabile GET)
2. oggetto DOM in cui stampare i dati restituiti dall'elaborazione
3. numero di secondi di attesa prima di iniziare l'elaborazione
4. metodo di passaggio dei dati tra le pagine
La pagina ajaxtest.php non fa altro che stampare il valore della variabile ricevuta in input:

if(isset($_GET['var_get'])) { echo "GET variable is: ".$_GET['var_get']; }

Elaborazione dati con variabile POST
Supponiamo di avere una pagina web in cui è presente un form testuale da compilare: vogliamo che alla pressione del pulsante di sottomissione, compaia sotto di esso il valore scritto, senza che venga aggiornata l'intera pagina.
Prima di tutto scriviamo il nostro form da compilare:

<form id="formPost" action="javascript:completeAHAH.likeSubmit('ajaxtest.php','POST','formPost','target_post');"> <input type="text" name="var_post" value="hello_post!"> <input type="submit" value="Say hello!"> </form>

Al di sotto del nostro link, inseriamo un oggetto DIV che andrà a contenere i risultati della chiamata:

<div id="target_post"></div>

Spiegazioni: la funzione AHAH richiamata è completeAHAH.likeSubmit, ed i relativi parametri sono:
1. pagina che si occuperà di elaborare i nostri dati
2. metodo di passaggio dei dati tra le pagine
3. oggetto DOM da cui prelevare i dati di input
4. oggetto DOM in cui stampare i dati restituiti dall'elaborazione
La pagina ajaxtest.php non fa altro che stampare il valore della variabile ricevuta in input:

if(isset($_POST['var_post'])) { echo "POST variable is: ".$_POST['var_post']; }

Provali entrambi scaricando questo pacchetto >>

Considerazioni finali
Semplice, no? Al momento (versione 2.6.2-dev di Flatnuke), la libreria AHAH (versione 1.1.3 experimental) viene utilizzata nella gestione del calendario (elaborazione GET), e nel motore di ricerca interno (elaborazione POST).
Le possibilità di applicazione sono molteplici, e di qualsivoglia livello di complessità: l'importante però, è tenere a mente che l'obiettivo deve essere sempre quello di facilitare la visita dell'utente sul nostro sito, senza prodursi in eccessi che renderebbero solo snervante la navigazione.

Riferimenti
Flatnuke
Libreria AHAH
Tecnica AJAX

PS: raccoglierò sicuramente quanto scritto qui in un documento per farne un vero e proprio howto; lascerò però passare un po' di tempo, aspettando di vedere se ci sono feedback in merito da qualcuno di interessato...

Precedente Prossimo