XML/XMLHttpRequest

< XML
Indice del libro

XMLHTTP è un set di API che possono essere usate da JavaScript, JScript, VBScript e altri linguaggi di scripting dei browser per trasferire XML o altri dati da e verso un web server tramite HTTP. Il più grande vantaggio di XMLHTTP è la possibilità di aggiornare dinamicamente una pagina web senza ricaricare l'intera pagina. Viene usato da alcuni siti web per velocizzare applicazioni dinamiche.

Oltre a XML, XMLHTTP può essere usato per prendere dati in altri formati, come JSON o anche testo semplice.

XMLHttpRequest (abbreviato: XHR) è un elemento fondamentale della tecnica di sviluppo web conosciuta con l'acronimo AJAX, ed è utilizzato in molti siti web per implementare applicazioni fruibili via browser dinamiche ed interattive. Una delle prime applicazioni ad utilizzare questo componente è stato il servizio di webmail di Google Gmail, a cui sono seguiti Google Suggest, Meebo, Virtual Earth di MSN e MapQuest.

Storia modifica

L'oggetto venne originariamente inventato da Microsoft, usato da Internet Explorer 5.0 come oggetto ActiveX, accessibile via JavaScript, VBScript, o qualsiasi altro linguaggio supportato dal browser. Gli sviluppatori di Mozilla implementarono poi una versione compatibile in Mozilla 1.0. Successivamente è stato supportato anche da Apple con Safari 1.2 e da Opera Software con Opera 8.0.

La maggior parte delle pagine ben progettate che usando XMLHTTP sono destinate a nascondere le implementazioni dell'oggetto XMLHTTP incapsulando la sua invocazione con un JavaScript.

Funzionalità simili sono incluse in DOM Livello 3 "Load and Save", già raccomandazione del W3C. A questo indirizzo è possibile trovare le informazioni di compatibilità con tutti i principali browser.

Al momento (2021) è implementato in maniera esauriente in tutti i principali browser (Safari, Chrome, FireFox, Opera).

Metodi modifica

Metodo Descrizione
abort() Cancella la richiesta in atto.
getAllResponseHeaders() Restituisce sotto forma di stringa tutti gli header HTTP ricevuti dal server
getResponseHeader( nome_header ) Restituisce il valore dell'header HTTP specificato
open( metodo, URL )
open( metodo, URL, async )
open( metodo, URL, async, userName )
open( metodo, URL, async, userName, password )
Specifica il metodo, l'URL e altri parametri opzionali per la richiesta.

Il parametro metodo può assumere valore di "GET", "POST", oppure "PUT" ("GET" è utilizzato quando si richiedono dati, mentre "POST" è utilizzato per inviare dati, specialmente se la lunghezza dei dati da trasmettere è maggiore di 512 byte).

Il parametro URL può essere sia relativo che assoluto.

Il parametro "async" specifica se la richiesta deve essere gestita in modo asincrono oppure no – "true" significa che lo script può proseguire l'elaborazione senza aspettare la risposta dopo il metodo send(), mentre "false" significa che lo script è costretto ad aspettare una risposta dal server prima di continuare.

send( content ) Invia la richiesta
setRequestHeader( chiave, valore) Aggiunge la coppia chiave/valore alla richiesta da inviare.

Attributi modifica

Attributo Descrizione
onreadystatechange Gestore dell'evento lanciato ad ogni cambiamento di stato.
readyState Restituisce lo stato corrente dell'istanza di XMLHttpRequest:

0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.

responseText Restituisce la risposta del server in formato stringa
responseXML Restituisce la risposta del server come oggetto Document, che potrà essere esaminato secondo le specifiche DOM del W3C.
status Restituisce il codice HTTP restituito dal server (per esempio 404 per "Not Found" e 200 per "OK").
statusText Restituisce lo status in forma di stringa descrittiva (per esempio. "Not Found" oppure "OK").