# XML/XMLHttpRequest

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
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

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

| 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

| 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"). |