DOM - Objeto XMLHttpRequest
El objeto XMLHttpRequest establece un medio entre el lado del cliente y el lado del servidor de una página web que puede ser utilizado por muchos lenguajes de scripting como JavaScript, JScript, VBScript y otros navegadores web para transferir y manipular los datos XML.
Con el objeto XMLHttpRequest es posible actualizar parte de una página web sin recargar toda la página, solicitar y recibir los datos de un servidor después de que la página haya sido cargada y enviar los datos al servidor.
Sintaxis
Un objeto XMLHttpRequest se puede instalar de la siguiente manera:
xmlhttp = new XMLHttpRequest();
Para manejar todos los navegadores, incluidos IE5 e IE6, verifique si el navegador admite el objeto XMLHttpRequest como se muestra a continuación:
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");
}
Aquí se pueden consultar ejemplos para cargar un archivo XML utilizando el objeto XMLHttpRequest
Métodos
La siguiente tabla enumera los métodos del objeto XMLHttpRequest:
S.No. | Método y descripción |
---|---|
1 | abort() Termina la solicitud actual realizada. |
2 | getAllResponseHeaders() Devuelve todos los encabezados de respuesta como una cadena, o nulo si no se ha recibido respuesta. |
3 | getResponseHeader() Devuelve la cadena que contiene el texto del encabezado especificado, o un valor nulo si la respuesta aún no se ha recibido o el encabezado no existe en la respuesta. |
4 | open(method,url,async,uname,pswd) Se utiliza en conjugación con el método Send para enviar la solicitud al servidor. El método abierto especifica los siguientes parámetros:
|
5 | send(string) Se utiliza para enviar la solicitud trabajando en conjugación con el método Open. |
6 | setRequestHeader() El encabezado contiene el par etiqueta / valor al que se envía la solicitud. |
Atributos
La siguiente tabla enumera los atributos del objeto XMLHttpRequest:
S.No. | Atributo y descripción |
---|---|
1 | onreadystatechange Es una propiedad basada en eventos que se activa en cada cambio de estado. |
2 | readyState Esto describe el estado actual del objeto XMLHttpRequest. Hay cinco estados posibles de la propiedad readyState:
|
3 | responseText Esta propiedad se utiliza cuando la respuesta del servidor es un archivo de texto. |
4 | responseXML Esta propiedad se utiliza cuando la respuesta del servidor es un archivo XML. |
5 | status Da el estado del objeto de solicitud Http como un número. Por ejemplo, "404" o "200". |
6 | statusText Da el estado del objeto de solicitud Http como una cadena. Por ejemplo, "No encontrado" o "Aceptar". |
Ejemplos
El contenido de node.xml es el siguiente:
<?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>
Recuperar información específica de un archivo de recursos
El siguiente ejemplo demuestra cómo recuperar información específica de un archivo de recursos utilizando el método getResponseHeader () y la propiedad 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>
Ejecución
Guarde este archivo como elementattribute_removeAttributeNS.htm en la ruta del servidor (este archivo y node_ns.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación:
Before removing the attributeNS: en
After removing the attributeNS: null
Recuperar información de encabezado de un archivo de recursos
El siguiente ejemplo demuestra cómo recuperar la información del encabezado de un archivo de recursos, utilizando el método getAllResponseHeaders() usando la propiedad 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>
Ejecución
Guarde este archivo como http_allheader.html en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación (depende del navegador):
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