"Laboratorio: Ajax passo passo"
Cosa si intende per AJAX
L'acronimo AJAX significaAsynchronous JavaScript And XML
(JavaScript asincrono e XML) Utilizzo asincrono di Javascript che attraverso l'interfacciamento con XML, permette ad un client di richiamare informazioni lato server in modo veloce e trasparente. Se parliamo di AJAX, parliamo di un oggetto specifico: XMLHttpRequest che permette di effettuare la richiesta di una risorsa ad un server web in modo indipendente dal normale traffico. Nella richiesta è possibile inviare informazioni sotto forma di variabili di tipo GET o POST in maniera simile all'invio dati di un form. La richiesta è asincrona, il che significa che non bisogna necessariamente attendere che sia stata ultimata per effettuare altre operazioni, stravolgendo sotto diversi punti di vista il flusso dati tipico di una pagina web. Generalmente infatti il flusso è racchiuso in due passaggi alla volta, richiesta dell'utente e risposta da parte del server per poi passare, eventualmente, alla nuova richiesta da parte dell' utente.Schemi a confronto:
Una richiesta normale e una richiesta Ajax
PRATICA 1): Ajax passo passo
L'OGGETTO XMLHttpRequest
XMLHttpRequest è l'oggetto che permette al codice Javascript di effettuare richieste HTTP asincrone al server. Questa funzionalità ci permette di fare richieste http, ricevere le risposte e aggiornare parti della pagina completamente in background, senza che l'utente subisca alcuna interruzione. Questo fatto è molto importante perché si puo mantenere l'interfaccia interattiva mentre il server viene interrogato per ricevere i nuovi dati. La sequenza delle operazioni che coinvolgono l'oggetto XMLHttpRequest è la seguente:1. Si crea l'istanza dell'oggetto XMLHttpRequest. 2. Si usa l'oggetto XMLHttpRequest per effetture una chiamata asincrona ad una pagina del server, definendo una funzione di callback(retrochiamata) che verrà eseguita automaticamente quando viene ricevuta la risposta del server. 3. Si gestisce la risposta del server nella funzione di callback. 4. Si torna al passo 2.
Proviamo con un esempio pratico ridotto all'essenziale per spiegare il principio di funzionamento: L'applicazione consiste dei seguenti tre file: 1. index.php è la pagina HTML iniziale che l'utente richiede. 2. richiestaAjax.js è un file che contiene il codice Javascript che viene caricato dal client insieme a index.php, questo file gestisce la creazione di richieste asincrone al server quando abbiamo bisogno di funzionalità lato server. 3. rispostaPHP.php è uno script PHP che risiede sul server e viene invocato dal codice Javascript contenuto nel file richiestaAjax.js del client.
PRATICA 2): Ajax passo passo
La tabella che segue riporta tutta la cronologia dei passi di una richiesta Ajax:
UTENTE | → | CLIENT WEB | → | SERVER WEB |
---|---|---|---|---|
1) L'utente usa il browser per accedere a index.php | 2)→ | Il browser effettua una normale richiesta HTTP al server per index.php | 3)→ | Il server risponde alla richiesta inviando index.php e il file richiestaAjax.js reclamato da index.php |
L'utente inizia a digitare il proprio nome nella pagina | ←(5 | Il client carica index.php e il file richiestaAjax.js e compone la pagina sullo schermo | ←(4 | ↵ |
↓ → |
6)→ | richiestaAjax.js effettua una richiesta asincrona a rispostaPHP.php sul server da parte dell'utente | 7)→ | rispostaPHP.php viene eseguito sul server e restituisce i risultati in formato XML |
↑ La pagina dell'utente viene aggionata con i nuovi dati, mentre si continua a lavorare | ←(9 | richiestaAjax.js riceve la risposta dal server e utilizza i dati per aggiornare la pagina dell'utente | ←(8 | ↵ |
I passi da 1 a 5 sono normali richieste HTTP. Dopo aver effettuato la richiesta, la pagina deve essere completamente caricata. Con le normali applicazioni web(non-AJAX) questo ricaricamento della pagina avviene ogni volta che l'utente ha bisogno di ottenere nuovi dati dal server. I passi da 5 a 9 mostrano una chiamata AJAX, più specificamente, una sequenza di richieste HTTP asincrone. II server viene contattato in background usando l'oggetto XMLHttpRequest. Durante queste operazioni l'utente può continuare a usare la pagina normalmente, come se si trattasse di una comune applicazione desktop. L'utente non deve assistere ad alcun refresh o ricaricamento della pagina per recuperare i dati dal server e aggiornare la pagina web con i nuovi dati.