Sie sind auf Seite 1von 4

XMLHttpRequest

XMLHttpRequest (XHR), también referida como XMLHTTP (Extensible Markup Language / Hypertext Transfer Protocol), es una
interfaz empleada para realizar peticionesHTTP y HTTPS a servidores Web. Para los datos transferidos se usa cualquier codificación
basada en texto, incluyendo: texto plano, XML, JSON, HTML y codificaciones particulares específicas. La interfaz se implementa
como una clase de la que una aplicación cliente puede generar tantas instancias como necesite para manejar el diálogo con el
servidor.

El uso más popular, si bien no el único, de esta interfaz es proporcionar contenido dinámico y actualizaciones asíncronas en páginas
web mediante tecnologías construidas sobre ella como por ejemploAJAX.

Índice
Historia
Evolución de la interfaz
Implementación y uso de la interfaz
Identificación del juego de caracteres
Atributos
Métodos
Eventos
Instanciación del objeto
Véase también
Referencias
Enlaces externos

Historia
La primera versión de la interfaz XMLHttpRequest fue desarrollada por Microsoft que la introdujo en la versión 5.0 de Internet
Explorer.1 Esta primera versión se publicó utilizando un objeto ActiveX, lo que significa que podía ser utilizada desde cualquier
entorno de desarrollo de software con soporte para esta tecnología, es decir, prácticamente la totalidad de plataformas generalistas de
desarrollo para Microsoft Windows. Microsoft ha seguido manteniendo y actualizando esta tecnología incluyendo la funcionalidad
dentro del Microsoft XML Parser (MSXML) en sus sucesivas versiones. A partir de la versión 7 de Internet Explorer la interfaz se
ofrece de manera integrada.1 Al ser integrada, el acceso a la interfaz se realiza enteramente con objetos (JScript o VBScript)
proporcionados por el navegador y no mediante bibliotecas externas.

El proyecto Mozilla incorporó la primera implementación integrada de XMLHttpRequest en la versión 1.0 de la Suite Mozilla en
2002. Esta implementación sería seguida por Apple a partir de Safari 1.2, Konqueror, Opera Software a partir del Opera 8.0 e iCab
desde la versión 3.0b352.

El World Wide Web Consortium presentó el 27 de septiembre de 2006 el primer borrador de una especificación estándar de la
interfaz.2 La versión actual de 17 de enero de 2012, denominadaXMLHttpRequest Level 2es el resultado de varias revisiones.3

Mientras no se alcance una versión definitiva, los desarrolladores de aplicaciones WEB deberán tener en cuenta las diferencias entre
implementaciones o bien utilizar paquetes oframeworks que realicen esta función.

Evolución de la interfaz
El 26 de febrero de 2008 se publicó la primera versión de la especificación XMLHttpRequest Level 2. Esta nueva especificación,
que se inicia antes de haber publicado la versión definitiva de la interfaz, pretende añadir nuevas funciones como: peticiones entre
dominios (cross-site), eventos de progreso y manejo de flujos de bytes streams)
( tanto para el envío como para la recepción.

Implementación y uso de la interfaz


XMLHttpRequest es una interfaz para realizar llamadas mediante HTTP, por lo que es recomendable un buen conocimiento de este
protocolo. Es importante el manejo correcto de la cache en el servidor HTTP
, en los proxy cache intermedios y en el navegador WEB.

La interfaz se implementa en una clase de la que se debe crear una nueva instancia mediante el constructor adecuado. Es posible
realizar peticiones síncronas y asíncronas al servidor. Cuando las operaciones son síncronas la ejecución del programa se detiene
hasta que se completa la operación. En una llamada asíncrona el flujo de proceso no se detiene a esperar la respuesta sino que esta
continúa en segundo plano y se define un manejador deevento que se ejecutará cuando se complete la petición.

Identificación del juego de caracteres


Otro elemento importante en la especificación, es el manejo de juegos de caracteres u hojas de códigos. La codificación y
decodificación de texto y la identificación de los juegos de caracteres mediante cabeceras HTTP y tipos MIME. El estándar
XMLHttpRequest recomiendaUTF-8 para la codificación de cadenas de texto.3

Para determinar la codificación de los datos transmitidos se usa el siguiente algoritmo, utilizando la primera opción que se cumpla:

Si los datos transmitidos son XML o HTML, y así se identifica mediante la correspondiente cabecera Content-
Type de HTTP, la codificación se detectará siguiendo las reglas de XML o HTML según corresponda.
Si la cabecera HTTP especifica un tipo MIME mediante Content-Type e identifica un juego de caracteres se
utiliza dicho juego de caracteres.
Si los datos enviados especifican unBOM válido, se utilizará la variante UTF determinada por dicho BOM.
Utilizar UTF-8.
Si no se identifica correctamente la codificación, existe el riesgo de que en un sistema en el que se mezclen varias codificaciones
puedan producirse errores de visualización de caracteres. Por ejemplo al incorporar funcionalidad AJAX, que por defecto utiliza
UTF-8, a una página WEB codificada conISO 8859-1.

Atributos
Atributo Descripción
Devuelve el estado del objeto como sigue:
readyState 0 = sin inicializar, 1 = abierto, 2 = cabecerasrecibidas, 3 = cargando y 4 = completado.

responseBody (Level 2) Devuelve la respuesta como un array de bytes


responseText Devuelve la respuesta como una cadena
Devuelve la respuesta como XML. Esta propiedad devuelve un objeto
responseXML documento XML, que puede ser examinado usando las propiedades y
métodos del árbol del Document Object Model.
Devuelve el estado como un número (p. ej. 404 para "Not Found" y 200
status
para "OK").
statusText Devuelve el estado como una cadena (p. ej. "Not Found" o "OK").

Métodos
Método Descripción
abort() Cancela la petición en curso
Devuelve el conjunto de cabeceras HTTP
getAllResponseHeaders()
como una cadena.
Devuelve el valor de la cabecera HTTP
getResponseHeader( nombreCabecera )
especificada.
open Especifica el método, URL y otros atributos
( método, URL [, asíncrono opcionales de una petición.
[, nombreUsuario [, clave]]] ) El parámetro de método puede tomar los valores "GET",
"POST", o "PUT" ("GET" y "POST" son dos formas para
solicitar datos, con "GET" los parámetros de la petición se
codifican en la URL y con "POST" en las cabeceras de
HTTP).

El parámetro URL puede ser una URL relativa o


completa.

El parámetro asíncrono especifica si la petición será


gestionada asíncronamente o no. Un valortrue indica que
el proceso del script continúa después del método send(),
sin esperar a la respuesta, y false indica que el script se
detiene hasta que se complete la operación, tras lo cual
se reanuda la ejecución.

En el caso asíncrono se especifican manejadores de


eventos, que se ejecutan ante cada cambio de estado y
permiten tratar los resultados de la consulta una vez que
se reciben, o bien gestionar eventuales errores.

send([datos]) Envía la petición


Añade un par etiqueta/valor a la cabecera
setRequestHeader( etiqueta, valor )
HTTP a enviar.

Eventos
Propiedad Descripción
onreadystatechange Evento que se dispara con cada cambio de estado.
onabort (Level 2) Evento que se dispara al abortar la operación.
onload (Level 2) Evento que se dispara al completar la carga.
onloadstart (Level 2) Evento que se dispara al iniciar la carga.
(Level 2) Evento que se dispara periódicamente con información
onprogress
de estado.
La propuesta inicial de W3C no incluye propiedades y eventos presentes en implementaciones reales, como por ejemplo los eventos
onload, onerror, onprogress, onabort y ontimeout. Algunos de ellos sí son recogidos por la nueva especificaciónLevel 2, como puede
verse en el cuadro anterior.

Instanciación del objeto


A continuación se muestra un posible código JavaScript que permite crear el objeto teniendo en cuenta las diferencias entre los
navegadores más populares.
var httpRequest ;
if (window .XMLHttpRequest )
{
//El explorador implementa la interfaz de forma nativa
httpRequest = new XMLHttpRequest ();
}
else if (window .ActiveXObject )
{
//El explorador permite crear objetos ActiveX
try {
httpRequest = new ActiveXObject ("MSXML2.XMLHTTP" );
} catch (e) {
try {
httpRequest = new ActiveXObject ("Microsoft.XMLHTTP" );
} catch (e) {}
}
}
if (!httpRequest )
{
alert("No ha sido posible crear una instancia de XMLHttpRequest" );
}

Véase también
AJAX, técnica de desarrollo web para crear aplicaciones interactivas
SOAP, protocolo de comunicación por medio de intercambio de datos XML
XML, JSON, para transferencia de información

Referencias
1. Microsoft. «About Native XMLHTTP» (http://msdn.microsoft.com/en-us/library/ms537505%28VS.85%29.aspx)(en
inglés). Consultado el 22 de mayo de 2012.
2. Anne van Kesteren; Dean Jackson (5 de abril de 2006). «The XMLHttpRequest Object»(http://www.w3.org/TR/2006/
WD-XMLHttpRequest-20060405/)(en inglés). W3C.
3. Anne van Kesteren (17 de enero de 2012).«XMLHttpRequest Level 2»(http://www.w3.org/TR/XMLHttpRequest/)(en
inglés). W3C.

Enlaces externos
Propuesta final de estándar para el objeto XMLHttpRequest— W3C (en inglés)
Propuesta actual de estándar para el objeto XMLHttpRequest, level 2— W3C (en inglés)
Interfaz XMLHttpRequest en el navegador Internet Explorer de Microsoft y presentación del soporte nativo (en
inglés)
Interfaz XMLHttpRequest en Mozilla(en inglés)
Interfaz XMLHttpRequest en el navegador Safari de Apple(en inglés)

Obtenido de «https://es.wikipedia.org/w/index.php?title=XMLHttpRequest&oldid=110083638
»

Esta página se editó por última vez el 20 ago 2018 a las 23:59.

El texto está disponible bajo laLicencia Creative Commons Atribución Compartir Igual 3.0 ; pueden aplicarse cláusulas
adicionales. Al usar este sitio, usted acepta nuestrostérminos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de laFundación Wikimedia, Inc., una organización sin ánimo de lucro.

Das könnte Ihnen auch gefallen