AJAX. Asynchronous JavaScript And Xml



Documentos relacionados
Juan Ramón Pérez Pérez

AJAX. Desarrollo de Aplicaciones Distribuidas

Javascript parte II: AJAX

Clase 4. Ajax XML. XML Ajax definición Breve explicación de como funciona el HTTP XMLHttpRequest. El XML se creó para que cumpliera varios objetivos.

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

XHTML DINAMICO AVANZADO (AJAX Y DOM)

Instalar y configurar W3 Total Cache

Ajax. Asynchronous JavaScript And XML No es un lenguaje de programación Varias tecnologías unidas de manera muy potente:

Parte III: AJAX y REST

MANUAL PARA INCLUIR EL MOTOR DE RESERVAS EN LA WEB DEL ESTABLECIMIENTO

vmysql Requisitos Previos Conexión con el servidor vmysql 1/5

PLATAFORMA VIRTUAL BASADA EN MOODLE

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Manual del Protocolo XML-RPC de Mensajería Negocios

PROGRAMACIÓN PÁGINAS WEB CON PHP

Manual CMS Mobincube

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Posicionar en Google la Central de Reservas On-Line: Generar Google Sitemap

App para realizar consultas al Sistema de Información Estadística de Castilla y León

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

PROPUESTA DE DESARROLLO DE SITIO WEB AVANZADO

MANUAL DE USUARIO: Ide Ura CAD V (Febrero de 2009)

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

DISPOSITIVO DE BANDA ANCHA

Guía de Apoyo Project Web Access. (Jefe de Proyectos)

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Al ser autoadministrable no tienes limitaciones de contenido ni artículos, dado que usted puede agregar y quitar información cuando lo desee.

FSx-Connector Guía rápida del Módulo pcron (Tareas Programadas) Créditos

Botón de Pago Instapago versión 1.1 TECNOLOGÍA INSTAPAGO C.A.

Introducción a la Firma Electrónica en MIDAS

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

ESOFT 3 Nice Screen Scraper: A simple scraper

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Su uso conlleva una serie de ventajas y desventajas propias del uso de estas herramientas.

JavaScript,, AJAX y otras tecnologías web. Área de Ingeniería Telemática

Un poco de culturilla...1 Crear un servicio Web...1 Usar servicios web...6

Manual de Usuario Sitio Dinámico e-ducativa Versión

PRESENTACIÓN DEL PRODUCTO

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Sistema en Terreno SmartPhone Android

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Qué es Google Calendar? Qué se puede hacer en Google Calendar?

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

SIEWEB. La intranet corporativa de SIE

Correo y servicios en la nube PDI. 11 de Diciembre de Servicios Informáticos Área de Apoyo al Usuario

Visión General de GXportal. Última actualización: 2009

REGISTRO DE DOMINIOS CONECTIVIDAD ADSL HOSTING COMPARTIDO RED CORPORATIVA VPN SOPORTE TECNICO PROFESIONAL

Manual de uso. Manual de uso - citanet 1

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

WINDOWS : TERMINAL SERVER

MANUAL TÉCNICO WEB SERVICE PROTOCOLO SOAP

MANUAL ECOMMERCE 2.0

ÁLAMO SOFTWARE PARA GESTIÓN INMOBILIARIA

SISTEMA DE INFORMACIÓN GEOGRÁFICA CATASTRO VIRTUAL. Gerencia de Desarrollo Urbano y Medio Ambiente Subgerencia de Catastro

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

Edición de Ofertas Excel Manual de Usuario

DWR: Easy Ajax for Java

Sencillo: Usuarios no técnicos crean y publican encuestas profesionales.

Novedades en Q-flow 3.02

Problemas sobre DNS y HTTP Asignatura de Redes

Soluciones Informáticas para la Gestión de la Calidad c/vicente Aleixandre nº 10 4º H, A CORUÑA Telf: / info@spuch.

Entorno Virtual Uso educativo de TIC en la UR Tutorial de uso de:

la red de Internet PRODIGY para poder tener acceso al sistema RAGNVALD vía Internet

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Este documento se distribuye bajo los términos de la licencia Creative Commons by sa. sa/2.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Tema 4: Tecnologías Web Java

Roles y Características

Introducción a PHP. * No es necesario declarar previamente las variables.

Ejemplos básicos de webmathematica para profesores

Curso de HTML5 y CSS3

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Quiz 11: Crear preguntas. Juan Quemada, DIT - UPM

Manual hosting acens

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

DESARROLLO WEB EN ENTORNO CLIENTE

Junio de 2014 MINISTERIO DE AGRICULTURA, ALIMENTACIÓN Y MEDIO AMBIENTE SUBSECRETARIA DIRECCIÓN GENERAL DE SERVICIOS

RED SOCIAL BLIGOO. Tutorial Bligoo

Guía de uso del Cloud Datacenter de acens

WINDOWS : COPIAS DE SEGURIDAD

Infraestructura Tecnológica. Sesión 1: Infraestructura de servidores

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

Programa. Conceptos básicos: variables, valores y objetos predefinidos, operadores, etc. etc. Callbacks, eval(), etc.

Plantilla de texto plano

INTRANET/INTERNET: CONTROL Y ADMINISTRACION PARA SERVICIOS EDUCATIVOS por David Antonio Andrade Laborde

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Presentaciones compartidas con Google Docs (tutorial)

Toda base de datos relacional se basa en dos objetos

Transcripción:

1 AJAX Asynchronous JavaScript And Xml

INTRODUCCIÓN (I) Ajax no es una tecnología en sí mismo. En realidad se trata de varias tecnologías independientes que se unen: XHTML y CSS, para crear una presentación basada en estándares. DOM, para la interacción y manipulación dinámica de la presentación. XML, XSLT y JSON, para el intercambio y la manipulación de información. XMLHttpRequest, para el intercambio asíncrono de información. JavaScript, para unir todas las demás tecnologías. 2

INTRODUCCIÓN (II) 3

XMLHTTPREQUEST El éxito actual de la tecnología AJAX se debe a que los navegadores mas importantes han estandarizado un objeto Javascript, llamado XMLHttpRequest, que permite hacer peticiones al servidor desde la pagina actual sin recargarla. Además, la respuesta puede ser tratada desde Javascript, bien sea como texto, bien sea como un objeto DOM (XML). De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones. 4

MODELO APLICACIÓN WEB Comparación gráfica del modelo tradicional de aplicación web y el nuevo modelo propuesto por AJAX. 5

COMUNICACIÓN Comparación entre las comunicaciones síncronas de las aplicaciones web tradicionales y las comunicaciones asíncronas de las aplicaciones AJAX 6

COMUNICACIÓN Las peticiones HTTP al servidor se sustituyen por peticiones JavaScript que se realizan al elemento encargado de AJAX. Las peticiones más simples no requieren intervención del servidor, por lo que la respuesta es inmediata. Si la interacción requiere una respuesta del servidor, la petición se realiza de forma asíncrona mediante AJAX. En este caso, la interacción del usuario tampoco se ve interrumpida por recargas de página o largas esperas por la respuesta del servidor. 7

APLICACIONES AJAX Gestores de correo electrónico: Gmail (http://www.gmail.com), Yahoo Mail (http://mail.yahoo.com), Windows Live Mail (http://www.hotmail.com). Cartografía: Google Maps (http://maps.google.com), Yahoo Maps (http://maps.yahoo.com), Windows Live Local (http://maps.live.com). Aplicaciones web y productividad: Google Docs (http://docs.google.com), Zimbra (http://www.zimbra.com/), Zoho (http://www.zoho.com/). Otras: Netvibes (http://www.netvibes.com) [metapágina], Digg (http://www.digg.com) [noticias], Meebo (http://www.meebo.com) [mensajería], 30 Boxes (http://www.30boxes.com) [calendario], Flickr (http://www.flickr.com) [fotografía]. 8

HISTORIA La historia de AJAX está íntimamente relacionada con un objeto de programación llamado XMLHttpRequest. El origen de este objeto se remonta al año 2000, con productos como Exchange 2000, Internet Explorer 5 y Outlook Web Access (OWA). Durante el desarrollo de OWA, se evaluaron dos opciones: un cliente formado sólo por páginas HTML estáticas que se recargaban constantemente o un cliente realizado completamente con HTML dinámico o DHTML. Se decantaron por la basada en DHTML. Sin embargo, para ser realmente útil a esta última le faltaba un componente que evitara tener que enviar continuamente los formularios con datos al servidor. Se creó la primera versión de lo que denominó XMLHTTP y para incluir esa tecnología en el navegador Internet Explorer se creo la librería MSXML (ver agregar o quitar programas, en windows). 9

PROPIEDADES DEL OBJETO XMLHTTPREQUEST readystate: valor numérico (entero) que almacena el estado de la petición. Los valores definidos para la propiedad readystate son los siguientes: 0: no inicializado (objeto creado, pero no se ha invocado el método open). 1: cargando (objeto creado, pero no se ha invocado el método send). 2: cargado (se ha invocado el método send, pero el servidor aún no ha respondido). 3: interactivo (se han recibido algunos datos, aunque no se puede emplear la propiedad responsetext). 4: completo (se han recibido todos los datos de la respuesta del servidor). responsetext : el contenido de la respuesta del servidor en forma de cadena de texto. responsexml: el contenido de la respuesta del servidor en formato XML. El objeto devuelto se puede procesar como un objeto DOM. status: el código de estado HTTP devuelto por el servidor (200 para una respuesta correcta, 404 para "No encontrado", 500 para un error de servidor, etc.). statustext: el código de estado HTTP devuelto por el servidor en forma de cadena de texto: "OK", "Not Found", "Internal Server Error", etc. 10

MÉTODOS DEL OBJETO XMLHTTPREQUEST (I) abort(): detiene la petición actual. getallresponseheaders(): devuelve una cadena de texto con todas las cabeceras de la respuesta del servidor. getresponseheader("cabecera"): devuelve una cadena de texto con el contenido de la cabecera solicitada. 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. setrequestheader("cabecera,"valor"): permite establecer cabeceras personalizadas en la petición HTTP. Se debe invocar el método open() antes que setrequestheader(). 11

MÉTODOS DEL OBJETO XMLHTTPREQUEST (II) 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). El método open() requiere dos parámetros (método HTTP y URL) y acepta de forma opcional otros tres parámetros. Definición formal del método open(): open(string metodo, string URL [,boolean asincrono, string usuario, string password]); Por defecto, las peticiones realizadas son asíncronas. Si se indica un valor false al tercer parámetro, la petición se realiza de forma síncrona, esto es, se detiene la ejecución de la aplicación hasta que se recibe de forma completa la respuesta del servidor. send(contenido): realiza la petición HTTP al servidor. El método send() requiere de un parámetro que indica la información que se va a enviar al servidor junto con la petición HTTP. Si no se envían datos, se debe indicar un valor igual a null. En otro caso, se puede indicar como parámetro una cadena de texto, un array de bytes o un objeto XML DOM. 12

APLICACIÓN AJAX (I) Primera aplicación: http://jorbartu.webcindario.com/ajax/ajax1.html Refactorizando la primera aplicación http://jorbartu.webcindario.com/ajax/ajax2.html 13

APLICACIÓN AJAX (II) Aplicando los conceptos de objetos de JavaScript, funciones constructoras y el uso de prototype, es posible realizar de forma sencilla el objeto cargador de contenidos. http://jorbartu.webcindario.com/ajax/ajax3.html 14

APLICACIÓN AJAX (III) El método GET se utiliza cuando se accede a un recurso que depende de la información proporcionada por el usuario. El método POST se utiliza en operaciones que crean, borran o actualizan información. Cuando se utiliza un elemento <form> de HTML, al pulsar sobre el botón de envío del formulario, se crea automáticamente la cadena de texto que contiene todos los parámetros que se envían al servidor. Sin embargo, el objeto XMLHttpRequest no dispone de esa posibilidad y la cadena que contiene los parámetros se debe construir manualmente. Al enviar los parámetros mediante POST es obligatorio incluir la cabecera Content-Type peticion_http.setrequestheader("content-type", "application/x-www-form-urlencoded"); http://jorbartu.webcindario.com/ajax/ajax4.html 15

APLICACIÓN AJAX (IV) La función crea_query_string() añade al final de la cadena un parámetro llamado nocache y que contiene un número aleatorio (creado mediante el método Math.random()). Añadir un parámetro aleatorio adicional a las peticiones GET y POST es una de las estrategias más utilizadas para evitar problemas con la caché de los navegadores. Como cada petición varía al menos en el valor de uno de los parámetros, el navegador está obligado siempre a realizar la petición directamente al servidor y no utilizar su cache. 16

APLICACIÓN AJAX (V) Utilizando el método POST podemos enviar un documento XML con la cabecera ContentType apropiada o enviar una cadena de texto que represente un documento XML. También podemos recibir los parámetros en formato XML, para ellos obtendremos la respuesta del servidor mediante la propiedad responsexml. http://jorbartu.webcindario.com/ajax/ajax5.html 17

APLICACIÓN AJAX (VI) Podemos procesar respuesta utilizando JSON, ya que es un formato más compacto y ligero que XML, y es mucho más fácil de procesar en el navegador del usuario. La respuesta JSON del servidor se obtiene mediante la propiedad responsetext. Para trabajar con el código JSON devuelto, se debe transformar esa cadena de texto en un objeto JSON. La forma más sencilla de realizar esa conversión es mediante la función eval(), en la que deben añadirse paréntesis al principio y al final para realizar la evaluación de forma correcta: var respuesta_json = http_request.responsetext; var objeto_json = eval("("+respuesta_json+")"); http://jorbartu.webcindario.com/ajax/ajax6.html 18

PROBLEMA DE LOS DOMINIOS DIFERENTES (I) Los navegadores imponen restricciones muy severas a las conexiones de red que se pueden realizar mediante AJAX. Esta característica se conoce como "el problema de los dominios diferentes" (en inglés,"cross-domain problem"). El código JavaScript alojado en un servidor, no puede realizar conexiones con otros dominios externos. También existen problemas entre subdominios de un mismo sitio web, que se pueden evitar con el uso de la propiedad document.domain. Afortunadamente, existen opciones para poder realizar conexiones con cualquier dominio externo al servidor que aloja el código JavaScript. Todas las soluciones que son viables técnicamente y que funcionan de la misma forma en cualquier navegador hacen uso de recursos en el servidor que aloja el código JavaScript original. 19

PROBLEMA DE LOS DOMINIOS DIFERENTES (II) La solución más sencilla es la de habilitar el módulo mod_rewrite en los servidores web de tipo Apache. Con este módulo activado, Apache se puede convertir en un proxy transparente que realice las peticiones externas en nombre del script y le devuelva los resultados. En el siguiente ejemplo, el navegador descarga el script desde el servidor1. Por este motivo, el código del script puede solicitar recursos del servidor1, pero no puede establecer conexiones con el servidor2: 20

PROBLEMA DE LOS DOMINIOS DIFERENTES (III) La solución más sencilla para resolver este problema consiste en configurar el servidor web del servidor1. Si se utiliza el servidor web Apache, para configurar el proxy transparente, se habilita el módulo mod_rewrite y se añaden las siguientes directivas a la configuración de Apache: RewriteEngine on RewriteRule ^/ruta/al/recurso$ http://www.servidor2.com/ruta/al/recurso Ahora, el código de la aplicación puede acceder a cualquier recurso del servidor2 ya que: El script realiza peticiones a: http://www.servidor1.com/ruta/al/recurso En el servidor1 se transforma automáticamente a: http://www.servidor2.com/ruta/al/recurso El servidor1 obtiene la respuesta del servidor2 y la envía de nuevo al script 21

PROBLEMA DE LOS DOMINIOS DIFERENTES (IV) Además de utilizar el servidor web como proxy transparente, también es posible diseñar un proxy a medida mediante software. Yahoo por ejemplo ofrece una extensa documentación para los desarrolladores de aplicaciones web. Entre esta documentación, se encuentra un artículo sobre el uso de proxys para evitar el problema de las peticiones externas de AJAX: http://developer.yahoo.com/javascript/howto-proxy.html Además, Yahoo ofrece un proxy de ejemplo realizado con PHP y que puede ser utilizado para conectar aplicaciones JavaScript con sus servicios web. 22

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (I) API: http://www.google.com/apis/maps API v2: http://code.google.com/intl/es/apis/maps/documentation/javascript/v2/ API v3: http://code.google.com/apis/maps/documentation/javascript/tutorial.html 23

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (II) Obtener una clave de la API v2: http://code.google.com/intl/es/apis/maps/signup.html Introducción v2: http://code.google.com/intl/es/apis/maps/documentation/javascript /v2/introduction.html Referencia clases v2: http://code.google.com/intl/es/apis/maps/documentation/javascript /v2/reference.html Introducción v3 http://code.google.com/intl/es/apis/maps/documentation/javascript /tutorial.html Referencia clases v3 http://code.google.com/intl/es/apis/maps/documentation/ javascript/reference.html 24

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (III) Carga del API de google maps en el head de la página html (sensor para ubicar el usuario) <script src="http://maps.google.com/maps?file=api&v=2&sensor=false& amp;key=abqiaaaa2reeeyryjkdzvrllj4i6jxrhgug6uvlsga7gxojtf 1C5OJyicxRWEaP5RgalD7muNqrCbgJmn7OEew" type="text/javascript"></script> Carga del mapa: <body onload="initialize()" onunload="gunload()"> Invocamos una función donde estará todo el código javascript. La función GUnload() es una utilidad diseñada para evitar fugas de memoria. En el body de la página html, fijamos el elmento en el que se mostrará el mapa <div id="mimapa" style="width: 500px; height: 300px"></div> 25

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (IV) Variable global var mapa; function initialize(){ } Creamos un mapa (etiqueta): mapa = new GMap2(document.getElementById("mimapa")); Inicialización del mapa (latitud, longitud, zoom): //javascript:void(prompt("ver coordenadas",gapplication.getmap().getcenter())); mapa.setcenter(new GLatLng(39.45378451206797, -0.39476215839385986), 15); Fijamos el tipo de mapa mapa.setmaptype(g_hybrid_map); Añadimos los controles para mover el mapa y hacer zoom mapa.addcontrol(new GSmallMapControl()); Añadimos los controles para elegir el tipo de mapa mapa.addcontrol(new GMapTypeControl()); Hacemos una llamada a una función que fijará los marcadores. fijarmarcadores(); 26

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (V) Fijamos los marcadores de nuestro mapa function fijarmarcadores() { //marcador La EVES var marcador1 = new GMarker(new GLatLng(39.45378451206797, -0.39476215839385986)); mapa.addoverlay(marcador1); GEvent.addListener(marcador1, "click", function() { this.openinfowindowhtml("la Escuela Valenciana de Estudios de la Salud (EVES).<br>Juan de Garay 21, 46017- Valencia. Tlf : 96 386 93 69<br><a href=http://www.eves.san.gva.es>página Web</a>");}); } 27

API DE UNA APLICACIÓN AJAX: GOOGLE MAPS (VI) v2 http://jorbartu.webcindario.com/ajax/maps.html v3 http://jorbartu.webcindario.com/ajax/mapv3.html 28

ENLACES http://www.appservnetwork.com/ajax/index.php http://miniajax.com/ http://api.prototypejs.org/ajax_section.html http://docs.jquery.com/ajax http://wiki.github.com/madrobby/scriptaculous/co ntrols 29