Me mudo

Este blog no recibirá ya más actualizaciones. Ve al nuevo blog enricflorit.com o averigua por qué me mudo.

lunes, 27 de agosto de 2012

XMLHttpRequest2, el futuro de AJAX

AJAX funciona gracias al objeto XMLHTTP. Curiosamente, fue creado por el ingeniero de Microsoft Alex Hopmann para Internet Explorer 5. Desde entonces, miles de aplicaciones web y páginas dinámicas han sido creadas. Ejemplos de ello son Gmail, Google Maps, Facebook, Twitter podrían ser los más conocidos. Se han creado cientos de frameworks y librerías de JavaScript que lo implementan, hacen más fácil y rápido su uso. Parece que cada vez es más imprescindible conocer el uso de esta tecnología.
En Abril del 2006, el W3C empezó el primer borrador para un estándar del objeto XMLHTTP. Éste ha ido evolucionando, se han creado múltiples versiones de este borrador. En Febrero de 2008, se empezó a escribir un nuevo borrador. Estaba dedicado a la evolución de XMLHTTP, el objeto XMLHttpRequest 2.
Esta nueva especificación (todavía se está trabajando en el borrador) incluye nuevos eventos, añade la posibilidad de establecer límites de tiempo a la conexión y da información adicional sobre el progreso de la transferencia HTTP. También aporta una mejora muy interesante, la posibilidad de subir archivos al servidor. Y como estamos hablando de AJAX, lógicamente sin recargar la página.
Nuevos eventos
Parece ser que desde ahora ya no usaremos el evento onreadystatechange. Eso sí, se mantendrá por razones históricas, nada más.
  • loadstart. Producido al empezar la carga.
  • progress. Se produce después del loadstart. La función usada al producirse puede recibir un objeto con las propiedades lengthComputable, loaded y total.
  • abort. Salta al interrumpirse manualmente la conexión.
  • error. Si se produce un error.
  • timeout. Si se ha definido un tiempo límite, este evento saltará cuando se supere.
  • load. Cuando se complete el progreso.
  • loadend. Se lanza una vez parado el progreso (después de load, error, abort o timeout).
Nuevos atributos
Para poder usar la carga de archivos y facilitarla, se han añadido los siguientes atributos:
  • upload. Permite manejar los eventos de progreso y carga.
  • timeout. Tiempo límite en milisegundos para la conexión.
Objeto FormData
Para poder manejar formularios fácilmente, se ha añadido el objeto FormData. También se puede usar para enviar datos fácilmente. Con el siguiente código:
var data = new FormData();
data.append('id','4');
data.append('nombre','Mi Nombre');
De esta manera, nos evitamos tener que codificar cadenas de petición de la forma id=4&nombre=Mi%20Nombre, etc.
Y aunque no todos los navegadores lo soporten, tenemos una solución cross browser...
En definitiva, que es cuestión de tiempo que se empiezen a generar códigos en la comunidad aprovechando estas nuevas características para el desarrollo de aplicaciones web, que seguro que serán el futuro de la web.
Hasta pronto! ;-)

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...