Descripción De XMLHttpRequest
Originalmente, Microsoft diseñó XMLHttpRequest para permitir que el Internet Explorer (IE) cargue documentos de XML de Javascript. Aunque tiene XML en su nombre, XMLHttpRequest realmente es un cliente genérico del HTTP para el Javascript. Con él, el Javascript puede hacer PARA CONSEGUIR y PARA FIJAR peticiones del HTTP. (para las peticiones del POSTE, los datos se pueden enviar al servidor en un formato de su elegir.) Las limitaciones principales a XMLHttpRequest son debido al sandbox de la seguridad del browser. Puede hacer solamente peticiones de HTTP(S) (el archivo URLs, por ejemplo, no trabajo), y puede hacer peticiones solamente al mismo dominio que la página actualmente cargada. Las limitaciones de la seguridad de XMLHttpRequest limitan las maneras en las cuales usted puede utilizarlo, pero la compensación en seguridad agregada está bien digno de ella. La mayoría de los ataques contra usos del Javascript se centran alrededor de código malévolo que inyecta en la página del Web. Si XMLHttpRequest permitiera peticiones a cualquier sitio del Web, sintió bien a un jugador importante en estos ataques. El sandbox de la seguridad reduce estos problemas potenciales. Además, simplifica el modelo de programación porque el código del Javascript puede confiar en implícito cualquier dato que cargue de XMLHttpRequest. Puede confiar en los datos porque los nuevos datos son tan seguros justo como la página que cargó la página inicial. A pesar de el hecho de que XMLHttpRequest proporciona solamente un API pequeño y apenas un puñado de métodos y de características, tiene sus diferencias entre los browsers. Estas diferencias están principalmente en el acontecimiento que dirige y se oponen el instantiation (en el IE, XMLHttpRequest es realmente un objeto de ActiveX), así que no son duras de trabajar alrededor. En la descripción siguiente del XMLHttpRequest API, el sintaxis de Mozilla para el instantiation de XMLHttpRequest se utiliza. Si usted desea funcionar los ejemplos en el IE, usted necesita substituir XMLHttpRequest() nuevo; con cualquier ActiveXObject("MSXML2.XMLHTTP.3.0 nuevo"); o el método completo del instantiation del cruz-cross-browser demostrado en "la sección de XMLHttpRequest del Cruz-cross-Browser" de este artículo. XMLHttpRequest es el método ma's-usado para las comunicaciones de AJAX porque proporciona dos características únicas. La primera característica proporciona la capacidad de cargar el nuevo contenido sin ese contenido que es cambiado en cualquier manera, que haga extremadamente fácil caber AJAX en sus patrones normales del desarrollo. La segunda característica permite que el Javascript haga llamadas síncronas. Una llamada síncrona para el resto de las operaciones hasta que es completa, y mientras que ésta no es una opción que se utiliza generalmente, puede ser útil en los casos en los cuales la petición actual debe ser terminada antes de que se tomen otras acciones. XMLHttpRequest::Open()El método abierto se utiliza para fijar el tipo de la petición (CONSIGA, FIJE, PUESTO, o PROPFIND), el URL de la página que es solicitada, y si la llamada sea asincrónica. Un username y una contraseña para la autentificación del HTTP pueden también ser pasados opcionalmente. El URL puede ser una trayectoria relativa (tal como page.html) o completa que incluye la dirección del servidor (tal como http://blog.joshuaeichorn.com/page.html). La firma básica del método es:
open(type, URL, isAsync, username, password)
En el ambiente del Javascript, las restricciones de la seguridad están en lugar. Estas restricciones de la seguridad hacen el método abierto lanzar una excepción si el URL es de un diverso dominio que la página actual. Las aplicaciones siguientes del ejemplo abiertas al sistema para arriba un síncrono CONSIGUEN la petición a index.html:
1 req del var = XMLHttpRequest() nuevo;
2 req.open('GET ', ' index.html ', falsos); 3 req.send(null); == 200) de 4 if(req.status 5 alert(req.responseText); XMLHttpRequest::Send()El método del enviar hace la conexión al URL especificada en abierto. Si la petición es asincrónica, la llamada la volverá inmediatamente; si no, la llamada bloqueará la ejecución adicional hasta que se ha descargado la página. Si el tipo de la petición es POSTE, la carga útil será enviada como el cuerpo de la petición que se envía al servidor. La firma del método es:
send(payload)
Cuando usted hace una petición del POSTE, usted necesitará fijar el Contenido-tipo jefe. Esta manera, el servidor sabe qué hacer con el contenido uploaded. Al imitador que enviaba una forma usando el POSTE del HTTP, usted fijó el tipo contento a application/x-www-form-urlencoded. Los datos de URLencoded son el mismo formato que usted ve en un URL después del "?". Usted puede ver un ejemplo de estos datos codificados haciendo una forma y fijando su método PARA CONSEGUIR. El ejemplo siguiente demuestra una petición síncrona del POSTE a index.php que esté enviando una carga útil de URLencoded. Si index.php contiene < el?php var_dump($_POST); ? >, usted puede ver los datos sometidos traducidos como si sea una forma normal en la alarma:
1 req del var = XMLHttpRequest() nuevo;
2 req.open('POST ', ' index.php ', falsos); 3 req.setRequestHeader('Content-type ', 4 ' application/x-www-form-urlencoded;charset=UTF-8;'); 5 req.send('hello=world&XMLHttpRequest=test '); == 200) de 6 if(req.status 7 alert(req.responseText); XMLHttpRequest::setRequestHeader()Hay muchos diversos casos en los cuales fijar un jefe en una petición pudo ser útil. El uso más común del setRequestHeader() es fijar el Contenido-tipo, porque la mayoría de los usos del Web saben ya ocuparse de ciertos tipos, tales como URLencoded. La firma del método del setRequestHeader toma dos parámetros: el jefe a fijar y su valor:
setRequestHeader(header, value)
Porque las peticiones enviadas usando XMLHttpRequest envían los mismos jefes estándares, incluyendo jefes de la galleta y los jefes de la autentificación del HTTP, como petición normal del browser, el nombre del jefe será generalmente el nombre del jefe del HTTP que usted desea eliminar. Además de jefes de eliminación del defecto, el setRequestHeader es útil para fijar el costumbre, jefes application-specific. Los jefes de encargo se prefijan generalmente con el x para distinguirlos de estándar unos. El ejemplo siguiente hace que un síncrono CONSIGUE la petición que agrega un jefe llamado X-foo a test.php. Si test.php contiene < el?php var_dump($_SERVER); ? >, usted verá el jefe sometido en la alarma:
1 req del var = XMLHttpRequest() nuevo;
2 req.open('GET ', ' test.php ', falsos); 3 req.setRequestHeader('X-foo', 'bar '); 4 req.send(null); 5 == 200) de 6 if(req.status 7 alert(req.responseText); XMLHttpRequest::getResponseHeader() y getAllResponseHeaders()El método del geTResponseHeader permite que usted consiga un solo jefe de la respuesta; esto es especialmente útil cuando todo lo que usted necesita es un jefe como Contenido-tipo; observe que el jefe especificado es caso-insensible. La firma del método es como sigue:
getResponseHeader(header)
los getAllResponseHeaders vuelven todos los jefes de la respuesta en una sola secuencia; esto es útil para eliminar errores o buscar para un valor. El ejemplo siguiente hace que un síncrono CONSIGUE la petición a test.html. Cuando el cliente recibe una respuesta, se alerta el Contenido-tipo y se alertan todos los jefes:
1 req del var = XMLHttpRequest() nuevo;
2 req.open('GET ', ' test.html ', falsos); 3 req.send(null); 4 == 200) de 5 if(req.status { 6 alert(req.getResponseHeader('Content-type ')); 7 alert(req.getAllResponseHeaders()); 8} Otros Métodos De XMLHttpRequestTodos los browsers ponen un método del abort() en ejecucio'n, que se utiliza para cancelar una petición asincrónica en curso. (un ejemplo de esto se demuestra en "enviando la sección de las peticiones asincrónicas" en este artículo.) los browsers Mozilla-basados también ofrecen algunos métodos adicionales encima del API básico; por ejemplo, el addEventListener() y el removeEventListener() proporcionan una manera de coger acontecimientos del estado sin usar encendido * las características. Hay también un método del overrideMimeType() que los permitir forzar el Contenido-tipo a text/xml de modo que sea analizado en un documento de DOM incluso si el servidor no lo divulga como tal. Los métodos Mozilla-especi'ficos pueden ser útiles en ciertas circunstancias, pero en la mayoría de los casos, usted debe permanecer lejos de ellos porque no todos los browsers los apoyan. Características De XMLHttpRequestXMLHttpRequest proporciona un número de características que proporcionen la información o resultados sobre la petición. La mayoría de las características son que se explica por sí mismo; usted lee simplemente el valor y actúa en él. Encendido * las características son los tratantes del acontecimiento que son utilizados asignándoles una función. Una lista de todas las características sigue:
Nota Mozilla reajusta a tratantes del acontecimiento,
tales como onreadystatechange, después de que se termine una
petición, así que usted necesita reajustarlos si usted está
haciendo llamadas múltiples con el mismo objeto. referencia del readyStateLa tabla siguiente demuestra los valores posibles para la variable del readyState. Volverá un número que representa el estado actual del objeto. Cada petición progresará en la lista de readyStates
Ligan el readyState variable y al tratante del acontecimiento del onreadystatechange de una manera tal que cada vez que se cambia la variable del readyState, llamen el tratante del acontecimiento del onreadystatechange. esto es un artículo agregado por el carol Rudenberg
|
|||||||||||||||||
|