Utente:Alex brollo/Pillole di AJAX

Da Wikivoyage.

Questa non è una pagina tecnica su AJAX, ma solo un'infarinatura, scritta da un dilettante, che ha lo scopo di spiegare all'incirca cos'è e cosa, in concreto, ci si può fare all'interno di un progetto wiki.

Cos'è AJAX[modifica]

AJAX è un "carattere emergente" di Javascript e di XML. Non è un linguaggio; è una specie di "fortunata combinazione" delle caratteristiche di questi due linguaggi.

Javascript è un agile linguaggio di programmazione che viene interpretato ed eseguito dal browser all'interno di una pagina. Le funzioni javascript caricate ed eseguite dopo l'apertura di una pagina nel vostro browser "vivono" solo nel piccolo mondo di quella pagina; nell'attimo in cui abbandonate la pagina, tutto scompare senza lasciare tracce, nemmeno nel vostro PC. Javascript è in grado di fare moltissime cose interagendo con il browser; in particolare, può leggere e scrivere nel codice html della pagina, modificandolo e aggiungendo o togliendo elementi, oppure leggendo dati ed elaborandoli. Può anche chiedere al server di aprire una nuova pagina inviandogli un URL; ma nel momento in cui il browser apre la nuova pagina, il "mondo" in cui vive la funzione chiamante è distrutto.

AJAX permette una cosa diversa: permette di inviare al server una richiesta di dati, sotto forma di un URL, e di ricevere la risposta del server, senza abbandonare la pagina da cui la richiesta è partita. I dati ricevuti indietro dal server possono essere utilizzati per arricchire di contenuti la pagina corrente. Attenzione: nulla verrà memorizzato, sarà soltanto visualizzato; il tutto avverrà nel piccolo mondo della pagina corrente, all'insaputa del server, e quando la pagina corrente verrà abbandonata, tutto sparirà; ma fintanto che la pagina corrente sarà aperta, tutti i dati saranno disponibili.

In pratica, qui nell'ambiente mediaWiki[modifica]

In ambiente MediaWiki, le comunicazioni con il server si basano sull'interfaccia API. In pratica, attraverso la costruzione di un URL, si invia al server una richiesta che viene interpretata e utilizzata per restituire dati o compiere azioni.

Normalmente, l'invio di un URL contenente una richiesta API produce l'apertura di una nuova pagina. Ma incorporando la richiesta in AJAX, il flusso di dati raggiunge la pagina richiedente senza aprirne un'altra, e può essere utilzzato via javascript per arricchire la pagina corrente.

In pratica: via AJAX, attraverso un'interrogazione API, si possono ricevere, e utilizzare in qualsiasi modo sia immaginabile, i dati relativi a qualsiasi pagina del progetto corrente, comprese le pagine speciali; e con un piccolo trucchetto (del tutto "regolare", non un hacking), si possono ottenere gli stessi dati da qualsiasi altro progetto basato su MediaWiki.

Implementazione in wikivoyage[modifica]

La wikisource italiana fa grande uso di javascript e si stanno moltiplicando le routine che si basano su richieste AJAX. Qui su wikivoyage, stiamo implementando uno script Iwt.js che consente la "transclusione interwiki" ossia che è in grado di ricevere, con una richiesta, l'html di qualsiasi altra pagina di qualsiasi progetto MediaWiki. Il problema è di inventiva: innanzitutto, la enormità dei dati accessibili stordisce; in secondo luogo, esiste una varietà altrettanto ampia di possibilità di utilizzo locale di quella potenziale massa di dati.