AJAX. Desarrollo de Aplicaciones Distribuidas



Documentos relacionados
AJAX. Desarrollo de Aplicaciones en Entornos Web Curso 2016/2017

AJAX. Asynchronous JavaScript And Xml

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.

Parte III: AJAX y REST

Javascript parte II: AJAX

A j ax. XHTML/CSS JavaScript/DOM XML PHP/ASP.NET/JSP-XML

DESARROLLO WEB EN ENTORNO CLIENTE

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

JavaScript III. JavaScript, la POO y el DOM

Web Service: Consulta de Sistema de Turnos Manual de referencia

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

TEMA 3 A: INTRODUCCIÓN AL DOM

Juan Ramón Pérez Pérez

Ejercicios de AJAX y REST

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

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

XHTML DINAMICO AVANZADO (AJAX Y DOM)

Scripting en el cliente: Javascript. Tecnologías Web

JavaScript como Orientación a Objetos

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

Programación Web Avanzada: AJAX y Google Maps

TEMA 7. Contenido

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Programación Hipermedia I

DESARROLLO WEB EN ENTORNO CLIENTE

Curso PHP Módulo 1 R-Luis

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

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

LENGUAJES DE PROGRAMACIÓN 4 MÓDULOS. 56 Horas

PROGRAMACIÓN PÁGINAS WEB CON PHP

DWR: Easy Ajax for Java

FORMACIÓN ESPECIALIZADA EN HERRAMIENTAS Y LENGUAJES DE PROGRAMACIÓN WEB

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS

MANUAL TÉCNICO WEB SERVICE PROTOCOLO SOAP

Tema 4: Diseño e Implementación de la Capa Web

Curso librerias Web 2.0. Aplicaciones Web Serv Inf UA JSON

Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión

Manual CMS Mobincube

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

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

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

Programación Web Tema 3.3 AJAX. Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM

XAJAX: una librería de AJAX para PHP (parte 1)

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Generador de Proxy remoto JavaScript.

CURSO DE PROGRAMACIÓN WEB EJERCICIOS PHP

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

Obtener status de un mensaje... 3

Aplicaciones seguras con ClaseSeguridad

Manual SSO Avant2. Última revisión: 02/05/2013. Copyright Codeoscopic S.A.

2- Formularios y JavaScript Course: Developing web- based applica=ons

Obtener status de un mensaje... 2

Tutorial Internet Explorer 5.5

TUTORIAL SOBRE EXPRESIONES REGULARES EN JAVASCRIPT PARA VALIDACIÓN DE CAMPOS EN FORMULARIOS HTML:

ÁLAMO SOFTWARE PARA GESTIÓN INMOBILIARIA

MANUAL ECOMMERCE 2.0

Objetivos y Temario CURSO PROGRAMACION JAVASCRIPT Y JQUERY

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II)

Kaldeera Advanced Forms 2009 Guía del usuario

Manual de USO de la Aplicación. Pasarela SMS

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

TEMA 9 CREACIÓN DE PÁGINAS WEB

Introducción al desarrollo web (idesweb)

Ejemplos básicos de webmathematica para profesores

4. CODIFICACIÓN. Previo a la codificación además de instalar las respectivas herramientas es. importante tenerlas bien configuradas.

Desarrollo de Aplicaciones Web con AJAX Huibert Aalbers Senior Certified Software IT Architect

EUROPIO ENGINE LAB: FORMULARIOS WEB Y TABLAS HTML EN SOLO

Tareas sobre ASP. Las cookies son incluidas por un script CGI (servidor) en la cabecera de un paquete http de respuesta al cliente.

JavaScript toma su sintaxis de los lenguajes de programación más conocidos, fundamentalmente C/C++, aunque también algo de Pascal.

Curso Online de Diseño Web avanzado con HTML5 y CSS3

Tema 1 HTTP y aplicaciones web

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Curso de Diseño web. Juan Carlos Hernández Pérez

DISEÑO WEB (I y II) CONTENIDO TEMÁTICO

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

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

XPERTO EN DISEÑO DE PÁGINAS WEB

APLICATECA. didimo Marketing. Manual de usuario. By DIDIMO Servicios Móviles.

Formularios HTML. Elementos de Programación y Lógica

Programación páginas web. Servidor (PHP)

Ayuda básica relativa al interfaz web

PHP Básico. PHP para principiantes

Manual de uso del Taglib de Template Saga

PHP. Introducción (1) Introducción (3) Introducción (2) PHP 1

Formularios HTML. Desarrollo de Aplicaciones Web Departamento Informática y Sistemas Universidad de Murcia Curso 2013/2014

Bases de Datos. Marta Elena Zorrilla Pantaleón. Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

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

BANNERS CÍCLICOS CON JAVASCRIPT

Cuadernillo de Autoaprendizaje Correo Electrónico Microsoft Outlook Express

UF1304 Elaboración de plantillas y formularios

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

Cómo optimizar HTML? Optimización y depuración del código. 1. Limpieza del código

Guía de uso del correo electrónico mediante Internet

ESOFT 3 Nice Screen Scraper: A simple scraper

Integración de GeoGebra en unidades de aprendizaje

CÓMO CREAR UNA PÁGINA WEB

Christian Busquiel Sanz Diego Morillo Arroyo Alicia Rodríguez Carrión José Romero Huertas

SEGUNDA PARTE: DOM y jquery

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Las pruebas unitarias se crean en una carpeta raíz del symfony: Test/Unit/EjemploTest.php

Transcripción:

AJAX Desarrollo de Aplicaciones Distribuidas

Contenido Introducción Desarrollo XMLHttpRequest Envío de datos Procesamiento de datos JSON Algunas técnicas en AJAX Referencias 2

AJAX - Introducción AJAX es un acrónimo de Asynchronous JavaScript + XML (JavaScript asíncrono + XML) Ajax no es una tecnología en sí mismo. En realidad, se trata de varias tecnologías independientes que se unen de formas nuevas y sorprendentes. Las tecnologías que forman AJAX son: 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 y JSON, para el intercambio de información. XMLHttpRequest, para el intercambio asíncrono de información. JavaScript, para unir todas las demás tecnologías. 3

AJAX 4

AJAX En las aplicaciones web tradicionales, las acciones del usuario en la página desencadenan peticiones al servidor. El servidor procesa la petición y devuelve una nueva página HTML al navegador del usuario. Peticiones continuas al servidor requieren esperar a que se recargue la página con los cambios solicitados. AJAX mejora la interacción del usuario evitando las recargas constantes de la página El intercambio de información con el servidor se produce en un segundo plano. 5

AJAX 6

AJAX AJAX eliminan la recarga constante de páginas mediante creación de un elemento intermedio entre el usuario y el servidor El usuario ya no se encuentra con una ventana del navegador vacía esperando la respuesta del servidor. Las peticiones HTTP al servidor se sustituyen por peticiones JavaScript que se realizan de forma asíncrona al elemento encargado de AJAX. Se evitan recargas de página o largas esperas por la respuesta del servidor. 7

8

AJAX - Desarrollo Contexto Introducido en nuevo desarrollo de Exchange 2000 (pobre cliente web OWA Outlook Web Access ) Desarrollo de XMLHTTP. Inclusión en la versión de Internet Explorer 5 (librería MSXML) 9

Ejemplo Hola Mundo : La petición HTTP y la descarga de los contenidos del archivo (mensaje hola mundo) se realizan sin necesidad de recargar la página. AJAX <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/ xhtml1/dtd/xhtml1-transitional.dtd"> <html> <head> <title>hola Mundo con AJAX</title> <script type="text/javascript"> function descargaarchivo() { // Obtener la instancia del objeto XMLHttpRequest if(window.xmlhttprequest) { peticion_http = new XMLHttpRequest(); else if(window.activexobject) { peticion_http = new ActiveXObject("Microsoft.XMLHTTP"); // Preparar la funcion de respuesta peticion_http.onreadystatechange = muestracontenido; // Realizar peticion HTTP peticion_http.open('get', 'http://localhost/holamundo.txt', true); peticion_http.send(null); function muestracontenido() { if(peticion_http.readystate == 4) { if(peticion_http.status == 200) { alert(peticion_http.responsetext); window.onload = descargaarchivo; </script> </head> <body></body> </html> 10

AJAX Cuatro bloques: instanciar el objeto XMLHttpRequest peticion_http = new XMLHttpRequest(); preparar la función de respuesta peticion_http.onreadystatechange = muestracontenido; onreadystatechange = cuando reciba la respuesta del servidor, se ejecuta manejador del evento. realizar la petición al servidor peticion_http.open('get', 'http://localhost/prueba.txt', true); peticion_http.send(null); ejecutar la función de respuesta muestracontenido() comprueba que se ha recibido respuesta válida del servidor (propiedad readystate) 11

AJAX - XMLHttpRequest Propiedades de XMLHttpRequest 12

AJAX Propiedad readystate 13

AJAX Métodos de XMLHttpRequest 14

AJAX open (string metodo, string URL [,boolean asincrono, string usuario, string password]); Por defecto, las peticiones realizadas son asíncronas send (contenido) contenido indica la información que se va a enviar al servidor junto con la petición HTTP (una cadena de texto, un array de bytes o un objeto XML DOM) 15

AJAX Envío de datos <form> <label for="fecha_nacimiento">fecha de nacimiento:</label> <input Ejemplo type="text" de interacción id="fecha_nacimiento" con el name="fecha_nacimiento" servidor /> <br/> <label for="codigo_postal">codigo postal:</label> <input type="text" id="codigo_postal" name="codigo_postal" /> <br/> <label for="telefono">telefono:</label> <input type="text" id="telefono" name="telefono" /> <br/> <input type="button" value="validar datos" /> </form> <div id="respuesta"></div> 16

var READY_STATE_COMPLETE=4; var peticion_http = null; function inicializa_xhr() { return new XMLHttpRequest(); function crea_query_string() { var fecha = document.getelementbyid("fecha_nacimiento"); var cp = document.getelementbyid("codigo_postal"); var telefono = document.getelementbyid("telefono"); return "fecha_nacimiento=" + encodeuricomponent(fecha.value) + "&codigo_postal=" + encodeuricomponent(cp.value) + "&telefono=" + encodeuricomponent(telefono.value) + "&nocache=" + Math.random(); function valida() { peticion_http = inicializa_xhr(); if(peticion_http) { peticion_http.onreadystatechange = procesarespuesta; peticion_http.open("post", "http://localhost/validadatos.jsp", true); peticion_http.setrequestheader("content-type", "application/x-www-form-urlencoded"); var query_string = crea_query_string(); peticion_http.send(query_string); function procesarespuesta() { if(peticion_http.readystate == READY_STATE_COMPLETE) { if(peticion_http.status == 200) { document.getelementbyid("respuesta").innerhtml = peticion_http.responsetext; Desarrollo de Aplicaciones 17 Distribuidas

AJAX peticion_http.setrequestheader("content-type", "application/x-www-formurlencoded"); si no se establece la cabecera Content-Type correcta, el servidor descarta todos los datos enviados mediante el método POST. para enviar parámetros mediante el método POST, es obligatorio incluir la cabecera Content-Type peticion_http.send(query_string); se encarga de enviar los parámetros al servidor (cadena de texto, documento XML, ) parámetros se envían en forma de cadena de texto con las variables y sus valores concatenados mediante el símbolo & encodeuricomponent() en query_string es imprescindible para evitar problemas con algunos caracteres especiales. 18

AJAX Procesamiento de datos XMLHttpRequest también permite la recepción de respuestas de servidor en formato XML. petición_http.responsexml Procesamiento mediante métodos DOM de manejo de documentos XML/HTML <respuesta> <mensaje>...</mensaje> <parametros> <telefono>...</telefono> <codigo_postal>...</codigo_postal> <fecha_nacimiento>...</fecha_nacimiento> </parametros> </respuesta> 19

AJAX function procesarespuesta() { if(peticion_http.readystate == READY_STATE_COMPLETE) { if(peticion_http.status Procesamiento == 200) { de la respuesta var documento_xml = peticion_http.responsexml; var root = documento_xml.getelementsbytagname("respuesta")[0]; var mensajes = root.getelementsbytagname("mensaje")[0]; var mensaje = mensajes.firstchild.nodevalue; var parametros = root.getelementsbytagname("parametros")[0]; var telefono = parametros.getelementsbytagname("telefono")[0].firstchild.nodevalue; var fecha_nacimiento = parametros.getelementsbytagname("fecha_nacimiento")[0].firstchild.nodevalue; var codigo_postal = parametros.getelementsbytagname("codigo_postal") [0].firstChild.nodeValue; + document.getelementbyid("respuesta").innerhtml = mensaje + "<br/>" + "Fecha nacimiento = " + fecha_nacimiento + "<br/>" + "Codigo postal = " + codigo_postal "<br/>" + "Telefono = " + telefono; 20

AJAX - JSON JSON (JavaScript Object Notation) Formato mucho más compacto y ligero que XML, usado para el intercambio de información Fácil de procesar por el navegador Tipo MIME oficial es application/json Representa estructuras de datos (arrays) y objetos (arrays asociativos) en forma de texto 21

JSON var modulos = new Array(); modulos[0] = "Lector RSS"; modulos[1] = "Gestor email"; modulos[2] = "Agenda"; modulos[3] = "Buscador"; modulos[4] = "Enlaces"; var modulos = ["Lector RSS", "Gestor email", "Agenda", "Buscador", "Enlaces"]; var modulos = new Array(); modulos.titulos = new Array(); modulos.titulos['rss'] = "Lector RSS"; modulos.titulos['email'] ="Gestor de email"; modulos.titulos['agenda'] = "Agenda"; var modulos = new Array(); modulos.titulos = new Array(); modulos.titulos.rss = "Lector RSS"; modulos.titulos.email ="Gestor de email"; modulos.titulos.agenda = "Agenda"; var modulos = new Array(); modulos.titulos = {rss: "Lector RSS", email: "Gestor de email", agenda: "Agenda"; 22

JSON La notación JSON para los arrays asociativos se compone de tres partes: 1. Los contenidos del array asociativo se encierran entre llaves ({ y ) 2. Los elementos del array se separan mediante una coma (,) 3. La clave y el valor de cada elemento se separan mediante dos puntos (:) Si la clave no contiene espacios en blanco, es posible prescindir de las comillas 23

JSON var modulo = new Object(); modulo.titulo = "Lector RSS"; modulo.objetoinicial = new Object(); modulo.objetoinicial.estado = 1; modulo.objetoinicial.publico = 0; modulo.objetoinicial.nombre = "Modulo_RSS"; modulo.objetoinicial.datos = new Object(); var modulo = { titulo : "Lector RSS", objetoinicial : { estado : 1, publico : 0, nombre : "Modulo RSS", datos : { ; 24

<respuesta> <mensaje>...</mensaje> <parametros> <telefono>...</telefono> <codigo_postal>...</codigo_postal> <fecha_nacimiento>...</fecha_nacimiento> </parametros> </respuesta> { mensaje: "...", parametros: {telefono: "...", codigo_postal: "...", fecha_nacimiento: "..." function procesarespuesta() { if(http_request.readystate == READY_STATE_COMPLETE) { if(http_request.status == 200) { var respuesta_json = http_request.responsetext; var objeto_json = eval("("+respuesta_json+")"); var mensaje = objeto_json.mensaje; var telefono = objeto_json.parametros.telefono; var fecha_nacimiento = objeto_json.parametros.fecha_nacimiento; var codigo_postal = objeto_json.parametros.codigo_postal; document.getelementbyid("respuesta").innerhtml = mensaje + "<br>" + "Fecha nacimiento = " + fecha_nacimiento + "<br>" + "Codigo postal = " + codigo_postal + "<br>" + "Telefono = " + telefono; 25

AJAX Se debe transformar la cadena de texto en un objeto JSON. Función eval(), se añaden paréntesis al principio y al final para realizar la evaluación de forma correcta var objeto_json = eval("("+respuesta_json+")"); Permite acceder a sus métodos y propiedades mediante la notación de puntos tradicional var fecha_nacimiento = objeto_json.parametros.fecha_nacimiento; Es posible el envío de los parámetros en formato JSON No es tarea sencilla (librerías JSON) 26

Algunas técnicas en AJAX Listas desplegables encadenadas Cuando se selecciona un elemento de la primera lista desplegable, se cargan en la segunda lista unos valores que dependen del valor seleccionado en la primera lista Autocompletar Al usuario se le presenta un cuadro de texto simple en el que puede introducir la información. A medida que el usuario escribe, la aplicación muestra en un desplegable los valores que coinciden con la entrada actual. 27

AJAX Listas desplegables encadenadas Los valores de la primera lista se incluyen en la página y cuando se selecciona un valor, se realiza una consulta al servidor para obtener los valores de la otra lista. 28

AJAX Autocompletar Combinar un cuadro de texto y una lista desplegable en AJAX. Cuando el usuario escribe en el cuadro de texto, la aplicación solicita al servidor los términos relacionados con lo escrito. Cuando la aplicación recibe la respuesta, la muestra a modo de ayuda para autocompletar. 29

Referencias Documentos de referencia: Introducción a AJAX, Javier Eguíluz Pérez ( www.librosweb.es) <fuente transparencias> AJAX, Manual imprescindible, 2008, Javier Mellado Domínguez, ANAYA Profesional AJAX, Nicholas C. Zakas, Jeremy McPeak y Joe Fawcett, 2006, ANAYA Ajax in Action, Dave Crane, Eric Pascarello, Darren James, 2005, Manning 30