Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelos de comunicación
Objeto XMLHttpRequest
Unidad 5.1.
Comunicación asíncrona
Modelos de comunicación
COMUNICACIÓN SÍNCRONA: JavaScript espera a que se produzca la respuesta del servidor antes de
continuar con la ejecución del código
Sesión
Cómputo en el
Cliente servidor
bloqueado
COMUNICACIÓN ASÍNCRONA: La ejecución del código JavaScript continúa sin esperar a la respuesta.
Utilizaremos un manejador de eventos para buscar la respuesta del servidor
Cómputo en el Servicio
Cliente
Unidad 5.1.
Comunicación asíncrona
Modelos de comunicación CLIENTE
Navegador
COMUNICACIÓN CLÁSICA
Interfaz de usuario
• Continuas recargas de la página
CLIENTE Llamada
• Información actualizada a partir del comportamiento JavaScript HTML+CSS
del usuario. Navegador
• Condiciona la petición realizada al servidor Interfaz de usuario Motor AJAX
• Envío continuo de formularios con datos al servidor lo
que conlleva sobrecarga en la red
Comunicación HTTP
• Imposibilidad de interactuar con otro elemento de la
HTML+CSS Comunicación HTTP
página hasta que no se ha cargado nuevamente
Petición HTTP Datos
Mostrar
información
Inicio
comunicación
con el servidor
Crea fragmentos
de la página
Unidad 5.1.
Comunicación asíncrona
Modelos de comunicación
En la programación back-end , saber que un servicio puede ser destino de peticiones AJAX, hace que los
servicios se programen de forma más eficiente e independiente. Este tipo de paradigma (conocido como SaaS)
ha impulsado un mayor desarrollo y eficiencia de las aplicaciones web
Puede incrementar el tráfico hacia los servidores de Internet. El hecho de que podamos realizar peticiones http
a servicios de Internet, puede facilitar la creación de aplicaciones que hagan peticiones http constantemente.
Ante esto, muchos servidores usan protección anti CORS -Cross-Origin Resource Sharing, Intercambio de
Recursos de Origen cruzado-
• POST los datos se envían de forma que no pueden verse (en un segundo plano u "ocultos" al usuario)
- Se utiliza en operaciones que crean, borran o actualizan información
Restricciones de tipos de datos Sí (sólo admite caracteres ASC-II) No (admite tanto texto como datos
binarios p.ej. archivos)
Riesgo de cacheado de datos recuperados en los navegadores SI NO
Posibles ataques e intentos de hackeo Sí (con más facilidad) Sí (con menos facilidad)
Unidad 5.1.
Comunicación asíncrona
Objeto XMLHttpRequest
Estos datos, podrán ser utilizados para modificar el DOM del documento actual, sin tener que recargar la
página, o también podrán ser evaluados con JavaScript, si son recibidos en formato JSON
Realiza la comunicación en segundo plano
Una de las limitaciones de XMLHTTPRequest es que, por seguridad, sólo nos deja realizar peticiones AJAX,
a las páginas que se encuentren hospedadas en el mismo Dominio, desde el cuál se está realizando la
petición AJAX
Unidad 5.1.
Comunicación asíncrona
Objeto XMLHttpRequest
Navegador Web Petición
XMLHttpRequest XMLHttpRecuest
2
Servidor Web
XMLHttpRequest
respuesta
Ocurre un evento
información Se procesa HttpRequest
• Se crea el objeto 4 • Se crea una respuesta
XMLHttpRequest Petición • Envía los datos al cliente
• Enviamos HttpRequest Intercambio de
JavaScript HTML y CSS 5 datos
1 3
• load – cuando la solicitud está; completa (incluso si el estado HTTP es 400 o 500), y la respuesta se descargó por
completo.
• error – cuando la solicitud no pudo ser realizada satisfactoriamente, ej. red caída o una URL inválida.
• progress – se dispara periódicamente mientras la respuesta está siendo descargada, reporta cuánto se ha
descargado.
objetoAjax.onload = function()
{ //Se procesa la respuesta del servidor
};
objetoAjax.onerror = function()
{ //Se procesa el error en la respuesta del servidor
};
objetoAjax.onprogress = function(event)
{// event.loaded - cuántos bytes se han descargado
// event.lengthComputable = devuelve true si el servidor envía la
cabecera Content-Length (longitud del contenido)
// event.total - número total de bytes (si `lengthComputable` es `true`)
};
Unidad 5.1.
Comunicación asíncrona
Objeto XMLHttpRequest
Respuesta del servidor
readyState cambia cuando se realiza una petición y se recibe la respuesta
0 sin inicializar. Objeto creado pero no se ha llamado al método open()
1 cargando. Se ha llamado a open() pero la petición no se ha enviado
2 cargado. La petición se ha enviado
3 interactivo. Se ha recibido una respuesta parcial
4 completo. Se ha recibido todos los datos
Propiedades para recuperar los datos del servidor:
reponseText Propiedad. Devuelve una cadena que contiene el cuerpo de la respuesta
status Devuelve el código del estado HTTP de la transmisión devuelto por el servidor web. Comprueba que no ha
habido errores en la comunicación con el servidor. Combinar con readyState
100 Respuesta provisional
200 Transmisión correcta
404 Enlace mal efectuado/programado
getAllResponseHeaders() Devuelve una cadena de texto con todas las cabeceras de la respuesta del servidor
onreadystatechange Responsable de manejar los eventos que se producen. Se invoca cada vez que se
produce un cambio en el estado de la petición HTTP. Normalmente es una referencia a
una función JavaScript
open("metodo", "url") Establece los parámetros de la petición que se realiza al servidor. Los parámetros
necesarios son el método HTTP empleado y la URL destino (puede indicarse de forma
absoluta o relativa)
PRÁCTICA