DOM - Oggetto XMLHttpRequest
L'oggetto XMLHttpRequest stabilisce un mezzo tra il lato client e il lato server di una pagina Web che può essere utilizzato da molti linguaggi di scripting come JavaScript, JScript, VBScript e altri browser Web per trasferire e manipolare i dati XML.
Con l'oggetto XMLHttpRequest è possibile aggiornare la parte di una pagina web senza ricaricare l'intera pagina, richiedere e ricevere i dati da un server dopo che la pagina è stata caricata e inviare i dati al server.
Sintassi
Un oggetto XMLHttpRequest può essere istanziato come segue:
xmlhttp = new XMLHttpRequest();
Per gestire tutti i browser, inclusi IE5 e IE6, controlla se il browser supporta l'oggetto XMLHttpRequest come di seguito:
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Gli esempi per caricare un file XML utilizzando l'oggetto XMLHttpRequest possono essere indicati qui
Metodi
La tabella seguente elenca i metodi dell'oggetto XMLHttpRequest -
S.No. | Metodo e descrizione |
---|---|
1 | abort() Termina la richiesta corrente effettuata. |
2 | getAllResponseHeaders() Restituisce tutte le intestazioni della risposta come stringa o null se non è stata ricevuta alcuna risposta. |
3 | getResponseHeader() Restituisce la stringa contenente il testo dell'intestazione specificata o null se la risposta non è stata ancora ricevuta o l'intestazione non esiste nella risposta. |
4 | open(method,url,async,uname,pswd) Viene utilizzato in combinazione con il metodo Send per inviare la richiesta al server. Il metodo open specifica i seguenti parametri:
|
5 | send(string) Serve per inviare la richiesta lavorando in coniugazione con il metodo Open. |
6 | setRequestHeader() L'intestazione contiene la coppia etichetta / valore a cui viene inviata la richiesta. |
Attributi
La tabella seguente elenca gli attributi dell'oggetto XMLHttpRequest -
S.No. | Attributo e descrizione |
---|---|
1 | onreadystatechange È una proprietà basata su eventi che viene attivata ad ogni cambio di stato. |
2 | readyState Descrive lo stato attuale dell'oggetto XMLHttpRequest. Sono disponibili cinque stati possibili della proprietà readyState:
|
3 | responseText Questa proprietà viene utilizzata quando la risposta dal server è un file di testo. |
4 | responseXML Questa proprietà viene utilizzata quando la risposta dal server è un file XML. |
5 | status Fornisce lo stato dell'oggetto richiesta HTTP come numero. Ad esempio, "404" o "200". |
6 | statusText Fornisce lo stato dell'oggetto richiesta HTTP come stringa. Ad esempio, "Non trovato" o "OK". |
Esempi
I contenuti di node.xml sono i seguenti:
<?xml version = "1.0"?>
<Company>
<Employee category = "Technical">
<FirstName>Tanmay</FirstName>
<LastName>Patil</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Non-Technical">
<FirstName>Taniya</FirstName>
<LastName>Mishra</LastName>
<ContactNo>1234667898</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Management">
<FirstName>Tanisha</FirstName>
<LastName>Sharma</LastName>
<ContactNo>1234562350</ContactNo>
<Email>[email protected]</Email>
</Employee>
</Company>
Recupera informazioni specifiche di un file di risorse
L'esempio seguente mostra come recuperare informazioni specifiche di un file di risorse utilizzando il metodo getResponseHeader () e la proprietà readState .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv = "content-type" content = "text/html; charset = iso-8859-2" />
<script>
function loadXMLDoc() {
var xmlHttp = null;
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlHttp;
}
function makerequest(serverPage, myDiv) {
var request = loadXMLDoc();
request.open("GET", serverPage);
request.send(null);
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.getElementById(myDiv).innerHTML = request.getResponseHeader("Content-length");
}
}
}
</script>
</head>
<body>
<button type = "button" onclick="makerequest('/dom/node.xml', 'ID')">Click me to get the specific ResponseHeader</button>
<div id = "ID">Specific header information is returned.</div>
</body>
</html>
Esecuzione
Salva questo file come elementattribute_removeAttributeNS.htm nel percorso del server (questo file e node_ns.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Otterremo l'output come mostrato di seguito -
Before removing the attributeNS: en
After removing the attributeNS: null
Recupera le informazioni di intestazione di un file di risorse
L'esempio seguente mostra come recuperare le informazioni di intestazione di un file di risorse, utilizzando il metodo getAllResponseHeaders() utilizzando la proprietà readyState.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<script>
function loadXMLDoc() {
var xmlHttp = null;
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlHttp;
}
function makerequest(serverPage, myDiv) {
var request = loadXMLDoc();
request.open("GET", serverPage);
request.send(null);
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.getElementById(myDiv).innerHTML = request.getAllResponseHeaders();
}
}
}
</script>
</head>
<body>
<button type = "button" onclick = "makerequest('/dom/node.xml', 'ID')">
Click me to load the AllResponseHeaders</button>
<div id = "ID"></div>
</body>
</html>
Esecuzione
Salvare questo file come http_allheader.html sul percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel server). Otterremo l'output come mostrato di seguito (dipende dal browser) -
Date: Sat, 27 Sep 2014 07:48:07 GMT Server: Apache Last-Modified:
Wed, 03 Sep 2014 06:35:30 GMT Etag: "464bf9-2af-50223713b8a60" Accept-Ranges: bytes Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip Content-Length: 256 Content-Type: text/xml