Definito l'oggetto, è indispensabile conoscerne metodi e parametri al fine di sfruttarlo al meglio a seconda delle necessità.
La lista dei metodi è diversa da browser a browser, per questo in genere si usano solo quelli presenti in Safari (browser per Mac), il quale supporta nativamente l'oggetto XMLHttpRequest ma con meno metodi rispetto gli altri.
Ecco quindi una lista, in ordine alfabetico, dei metodi supportati da tutti i browsers AJAX compatibili:
abort
getAllResponseHeaders
getResponseHeader
open
send
setRequestHeader
Questi metodi permettono di effettuare le varie operazioni asincrone. Nonostante siano state presentate in ordine alfabetico è necessario analizzarle in ordine di utilizzo al fine di capire al meglio a cosa servono, quali parametri richiedono e perché.
open
Il primo ad essere usato per effettuare una chiamata asincrona è il metodo open
, il quale è definito dal W3C (Working Draft) per accettare 5 parametri. Noi ne useremo 3.
Sintassi del metodo open()
open (method, uri [,async][,user][,password])
Metodo di invio dati
Il primo parametro è una stringa che indica il metodo di invio dati. Possiamo valorizzarlo come "get"
o "post"
. La differenza principale tra questi due metodi è la stessa di un normale form HTML: scegliendo GET le variabili verranno appese alla pagina selezionata (per esempio pagina.html?variabile=valore
), mentre utilizzando POST queste verranno inviate in modo invisibile all'utente e senza i limiti tipici del GET.
Entrando nel dettaglio, il limite principale di una chiamata GET, non direttamente presente in POST, è numero di caratteri che si possono inviare (che varia a seconda del browser), solitamente pari ad un massimo di 256. D'altro canto è molto più comodo e semplice inviare questi dati sotto forma di link e sarà quindi cura dello sviluppatore scegliere il metodo più idoneo per quel tipo di scambio dati.
Per il metodo POST il limite può essere imposto dal server dell'host che fornisce il servizio, configurato per non ricevere più di un certo numero di Mega Bytes di dati per ogni richiesta POST, solitamente pari ad 8Mb. Limite trascurabile per la maggior parte delle applicazioni.
Nessuna differenza invece in ricezione dati. Ad esempio, inviando un id univoco di un database di una biblioteca attraverso l'uso del metodo GET, si può ricevere la Divina Commedia. Lo stesso vale per POST.
Nome della pagina
Il secondo parametro è il nome della pagina da leggere, rappresentato anch'esso da una stringa, che può essere descritto con indirizzo assoluto, per esempio "http://html.it/cartella/ajax.html"
, oppure come percorso relativo, ad esempio se si naviga nell' host http://html.it/
l'uri può essere "cartella/ajax.html"
.
Definizione di asincronismo
Il terzo parametro è un valore booleano che deve essere impostato come true
, vero, per indicare al metodo open che la richiesta da effettuare è di tipo asincrono.
Listato 3. Esempio di invocazione del metodo open()
// esempio di richiesta pagina con metodo get
ajax.open("get", "cartella/ajax.html?leggi=Dante", true);
// esempio di richiesta pagina con metodo post
ajax.open("post", "cartella/ajax.html", true);
// verrà spiegato poi come inviare la variabile
// di nome leggi con contenuto uguale a Dante
Quanto mostrato è un tipico esempio di richiesta con l'invio di una variabile, ma non è indispensabile inviare parametri, è possibile richiamare col più semplice metodo get una pagina di testo o html senza inviare alcun valore.