Computación Web (Curso 2013/2014)

Documentos relacionados
Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Aplicaciones Web (Curso 2014/2015)

Computación Web (Curso 2015/2016)

Aspectos Avanzados de Programación Web

DESARROLLO WEB EN ENTORNO CLIENTE

Aplicaciones Web AJAX. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

AJAX AJAX. Asynchronous JavaScript and XML. AJAX=Asynchronous JavaScript and XML. AJAX se basa en los siguientes estándares: JavaScript XML XHTML CSS

Índice INTRODUCCIÓN...11 CAPÍTULO 1. SELECCIÓN DE ARQUITECTURAS Y HERRAMIENTAS DE PROGRAMACIÓN...13

Introducción a JavaScript

JavaScript: Introducción

Node.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella

Características de JavaScript

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

PRÓLOGO...13 CAPÍTULO 1. INTRODUCCIÓN A AJAX...17

Lo básico de Javascript

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.

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

Ajax, la nueva tendencia en la Web. Autor: Lic. Ivannis Suárez Jérez Profesor Instructor

Curso ONLINE de Javascript, jquery y Angular2_. Duración: 50 sesiones aprox. (150 horas lectivas)

TIPOS DE DATOS EN JAVASCRIPT. TIPOS PRIMITIVOS Y OBJETO. SIGNIFICADO DE UNDEFINED, NULL, NAN (CU01112E)

XMLHTTPREQUEST AJAX: PROPIEDADES STATUS, ONREADYSTATECHANGE, READYSTATE, RESPONSETEXT O XML (CU01207F)

JavaScript. CI-2413 Desarrollo de aplicaciones para Internet Prof. Braulio José Solano Rojas ECCI, UCR

Desarrollo Web. Parte 2 Edición Taller de Programación

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

consola en JavaScript usando sentencias compuestas y de control. consola en JavaScript usando funciones. Desarrollar programas computacionales de

Manual de ajax en español By ajaxman Usando ajax mediante el método get para realizar peticiones de manera transparente

DESARROLLO FRONTEND 180 H. (2-3 MESES) CURSO DE

JAVA 7 Los fundamentos del lenguaje Java

JavaScript: Introducción

jquery y Ajax 07/04/2017 Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos jquery y AJAX

XMLHTTPREQUEST AJAX: MÉTODOS OPEN, SEND, GETRESPONSEHEADER, SETREQUESTHEADER (CU01209F)

Programa Saiotek 2006 SMARTLAB. Entorno de Trabajo Inteligente Colaborativo y Programable

Presentación y objetivos

Desarrollo y servicios web

JavaScript. PDF created with pdffactory trial version (c) Juan Carlos Cano Todos los derechos reservados

Introducción al desarrollo web (idesweb)

Objetivos y Temario CURSO JAVA 7

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

Aprender a desarrollar con JavaScript

Javascript parte II: AJAX

Parte III: AJAX y REST

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

Aprender a desarrollar con JavaScript (2a edición)

XHTML DINAMICO AVANZADO (AJAX Y DOM)

Ejemplos prácticos de JavaScript sin utilizar jquery

Introducción al desarrollo web (idesweb) - 3 a ed.

Lenguajes de Script. Qué son los Lenguajes de Script?

Desarrollo Web con PHP y MySQL

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Aplicaciones Ricas en Internet. Unidad 1. AJAX. Apuntes AJAX

Programación Web Tema 3.1 Java Script - Introducción y Fundamentos

Introducción a AJAX. Eduardo Ostertag Jenkins, Ph.D. OBCOM INGENIERIA S.A. (Chile)

PHP. MySQL. Diseño de Comportamientos Interactivos III. JAVAScript. Abel Valle-Chávez + + Diseño Interactivo. M. en C.C.

PROGRAMACIÓN EN JAVA

2.4. Unidades de Aprendizaje. Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1. Propósito de la unidad

AJAX. Desarrollo de Aplicaciones Distribuidas

Curso de JavaScript y DOM Scripting para Desarrollo Web

Tema 5. APIs y Servicios web

Programa Formativo. Código: Curso: Programación con JAVA 8 SE Standard Edition Modalidad: ONLINE Duración: 120h.

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Nombre del Módulo: Desarrollo de aplicaciones web dinámicas con Código: CSTI0214 Duración total: 172 horas

Desarrollo de Aplicaciones Web con PHP. Javier Enciso

Guía del Curso Especialista TIC en Programación con JAVA 8 SE Standard Edition

Experto Universitario Java Enterprise Spring

Aplicaciones Web. Aplicaciones Distribuidas

Alternativas a XML JSON, YAML, SXML, CSV, RDF. Jose Emilio Labra Gayo Depto. Informática Universidad de Oviedo

Objetivos MODULO I. HTML, XHTML,CSS

Introducción a la programación en PHP

Características de Lenguajes de Scripts

JAVASCRIPT: ACCEDER A ELEMENTOS POR ID. GETELEMENTBYID. DOCUMENT.ALL. CAMBIAR IMAGEN IMG SRC (CU01127E)

Tema 3, Programación en el cliente con Javascript. Parte I: Introducción a Javascript

Ajax. Technology review

Ingeniería de Sistemas

Master en Java Certificación para Programadores

Computación Web (Curso 2013/2014)

STATIC JAVASCRIPT. PROPIEDADES Y MÉTODOS ESTÁTICOS O DE CLASE. EJERCICIO. CÓDIGO EJEMPLOS BÁSICOS (CU01148E)

PHP Programming. Learn how PHP works Learn the basic syntax of PHP Learn to create dynamic interactive pages with PHP

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

PHP: Lenguaje de programación

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Hello World Ajax! con Eclipse

AJAX. Asynchronous JavaScript And Xml

Curso de JAVASCRIPT 1 / 3

Capítulo III. Fundamentos de AJAX

Expresiones y operadores Las expresiones y operadores (son iguales a las usadas en C, C++ o Java) pueden ser: aritméticos, lógicos o relacionales.

Programación Web Avanzada: AJAX y Google Maps

Introducción a AJAX. Jordi Sánchez Cano PID_

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Grupo de Ingeniería del Software. Conceptos básicos

Curso librerias Web 2.0. Aplicaciones Web Serv Inf UA JSON

JavaScript Avanzado (I)

TEMA 7. Contenido

Extensiones. Guillermo López Mozilla Hispano

PHP 7 Desarrollar un sitio web dinámico e interactivo

Transcripción:

Javascript y AJAX Computación Web (Curso 2013/2014) Jesús Arias Fisteus // jaf@it.uc3m.es Javascript y AJAX p. 1

Javascript Javascript y AJAX p. 2

Introducción a JavaScript JavaScript: Lenguaje de programación interpretado. Débilmente tipado. Sintácticamente parecido a C, C++ y Java. Utilizado habitualmente en navegadores Web (client side JavaScript) para mejorar la interactividad de las páginas. Estandarizado bajo el nombre de ECMAScript. Javascript y AJAX p. 3

Interactividad en el navegador con JavaScript Client side JavaScript hace interactivo el documento HTML mediante, principalmente: Manejadores de eventos: Se puede ejecutar código específico (manejadores) cuando se cargue/cierre la página, el usuario interaccione con elementos de la misma o periódicamente. Modificación dinámica del documento: document.write() permite escribir directamente el contenido del documento. API de DOM: acceso lectura/escritura a la estructura del documento. Javascript y AJAX p. 4

Sentencias de control Similares en sintaxis a las de Java y C: if, switch. for, while, do while. return, break, continue. Javascript y AJAX p. 5

Tipos de datos Tipos de datos simples: Números, cadenas de texto, booleanos,null, undefined. Objetos: Arrays, funciones, expresiones regulares, objetos. Javascript y AJAX p. 6

Objetos Contenedores de propiedades: Cada propiedad tiene un nombre y un valor. No existe un concepto de clase que restrinja las propiedades que puede tener un objeto. Un objeto puede heredar de otro objeto. Javascript y AJAX p. 7

Ejemplo: Inicialización literal de objetos var empty_object = {}; var stooge = { "first-name": "Jerome", "last-name": "Howard" }; Javascript y AJAX p. 8

Ejemplo: Inicialización literal de objetos var flight = { airline: "Oceanic", number: 815, departure: { IATA: "SYD", time: "2004-09-22 14:55", city: "Sydney" }, arrival: { IATA: "LAX", time: "2004-09-23 10:42", city: "Los Angeles" } }; Javascript y AJAX p. 9

Acceso a propiedades de objetos Mediante corchetes o con punto: stooge["first-name"] flight.departure.iata // "Jerome" // "SYD" Las propiedades que no existen devuelven undefined: stooge["middle-name"] flight.status stooge["first-name"] // undefined // undefined // undefined Javascript y AJAX p. 10

Actualización de propiedades Mediante asignación: stooge[ first-name ] = Jerome ; flight.number = 7005; Si la propiedad no existe en el objeto, se crea automáticamente: stooge[ middle-name ] = Lester ; stooge.nickname = Curly ; flight.equipment = { model: Boeing 777 }; flight.status = overdue ; Javascript y AJAX p. 11

Objetos por referencia Los objetos se pasan por referencia, al igual que en Java: var x = stooge; x.nickname = Curly ; var nick = stooge.nickname; // nick is Curly because x and stooge // are references to the same object var a = {}, b = {}, c = {}; // a, b, and c each refer to a // different empty object a = b = c = {}; // a, b, and c all refer to // the same empty object Javascript y AJAX p. 12

Funciones Las funciones son objetos: Pueden usarse como cualquier otro objeto en asignaciones, etc. Declaración literal de funciones: // Create a variable called add and store a function // in it that adds two numbers. var add = function (a, b) { return a + b; }; Javascript y AJAX p. 13

Invocación a funciones Varios patrones de invocación: Invocación como método. Invocación como función. Invocación como constructor. Invocación medianteapply. Javascript y AJAX p. 14

Invocación como método // Create myobject. It has a value and an increment // method. The increment method takes an optional // parameter. If the argument is not a number, then 1 // is used as the default. var myobject = { value: 0, increment: function (inc) { this.value += typeof inc === number? inc : 1; } }; myobject.increment( ); document.writeln(myobject.value); // 1 myobject.increment(2); document.writeln(myobject.value); // 3 Javascript y AJAX p. 15

Invocación como función var sum = add(3, 4); // sum is 7 Javascript y AJAX p. 16

Invocación conapply // Make an array of 2 numbers and add them. var array = [3, 4]; var sum = add.apply(null, array); // sum is 7 Javascript y AJAX p. 17

Excepciones var add = function (a, b) { if (typeof a!== number typeof b!== number ) { throw { name: TypeError, message: add needs numbers }; } return a + b; } try { add("seven"); } catch (e) { document.writeln(e.name + : + e.message); } Javascript y AJAX p. 18

Herencia En Javascript no existe el concepto de clase. Cada objeto está asociado a un prototipo. La herencia es de objeto a objeto mediante el sistema de prototipos. Javascript y AJAX p. 19

Herencia var mymammal = { name : Herb the Mammal, get_name : function ( ) { return this.name; }, says : function ( ) { return this.saying ; } }; Javascript y AJAX p. 20

Herencia (diferencial) var mycat = Object.create(myMammal); mycat.name = Henrietta ; mycat.saying = meow ; mycat.purr = function (n) { var i, s = ; for (i = 0; i < n; i += 1) { if (s) { s += - ; } s += r ; } return s; }; mycat.get_name = function ( ) { return this.says() + + this.name + + this.says(); }; Javascript y AJAX p. 21

Arrays var empty = []; var numbers = [ zero, one, two, three, four, five, six, seven, eight, nine ]; empty[1] numbers[1] // undefined // one empty.length // 0 numbers.length // 10 numbers.length = 3; // numbers is [ zero, one, two ] numbers[numbers.length] = shi ; // numbers is [ zero, one, two, shi ] numbers.push( go ); // numbers is [ zero, one, two, shi, go ] Javascript y AJAX p. 22

Arrays delete numbers[2]; // numbers is [ zero, one, undefined, shi, go ] numbers.splice(2, 1); // numbers is [ zero, one, shi, go ] Javascript y AJAX p. 23

Inclusión de JavaScript en HTML <!-- directamente con el elemento script (en la cabecera o en el cuerpo del documento) --> <script type="text/javascript"> var d = new Date(); document.write(d.tolocalestring()); </script> <!-- desde un recurso externo --> <script src="scripts/util.js" type="text/javascript" /> <!-- desde un manejador de eventos de HTML --> <input type="button" value="change" onclick="changename()" /> <p onmouseover="showhelp( p1 )">...</p> Javascript y AJAX p. 24

Ejemplo: API DOM (I) var n = document.documentelement; var children = n.childnodes; var head = children[0]; var body = children[1]; // objeto Node // objeto NodeList // contar el número de tablas var tables = document.getelementsbytagname("table"); alert("el documento contiene " + tables.length + " tablas."); // acceso a un párrafo <p id="specialparagraph">...</p> var paragraph = document.getelementbyid("specialparagraph"); Javascript y AJAX p. 25

Ejemplo: API DOM (II) // modificar un atributo de un elemento var headline = document.getelementbyid("headline"); // alternativa genérica: headline.setattribute("align", "center"); // alternativa para atributos estándar del elemento headline.align = "center"; // añadir un elemento var p = document.getelementbyid("headline"); var i = document.createelement("i"); i.class = "resaltado"; i.appendchild(document.createtextnode("texto en cursiva")); p.appendchild(i); Javascript y AJAX p. 26

Referencias Douglas Crockford. JavaScript: The Good Parts. O Reilly Media, Inc. (2008) Acceso en línea en Safari La mayoría de los ejemplos de estas transparencias provienen de este libro. David Flanagan. JavaScript: The Definitive Guide (5th Ed.) O Reilly. Javascript y AJAX p. 27

AJAX (Asynchronous JavaScript and XML) Javascript y AJAX p. 28

AJAX (Asynchronous JavaScript and XML) Nombre que se aplica al uso combinado de: JavaScript. XMLHttpRequest. Javascript y AJAX p. 29

Programación de HTTP desde JavaScript En principio, es el navegador el que genera peticiones HTTP y procesa las respuestas: JavaScript puede forzar peticiones estableciendo el atributo src en img, iframe y script, pero tiene problemas de portabilidad entre navegadores. La API XMLHttpRequest permite de forma más sencilla a JavaScript realizar peticiones HTTP y procesar sus respuestas. Javascript y AJAX p. 30

Uso de XMLHttpRequest Proceso de tres etapas: 1. Creación del objeto XMLHttpRequest. 2. Especificación y envío del mensaje HTTP al servidor. 3. Recepción (síncrona o asíncrona) de la respuesta del servidor. A pesar del nombre, no es estrictamente necesario que los mensajes HTTP intercambiados codifiquen los datos con XML: JSON tiene mucha aceptación como alternativa. Javascript y AJAX p. 31

Peticiones síncronas: La funciónsend retorna una vez se haya recibido la respuesta. La página queda bloqueada hasta que se recibe la respuesta. Javascript y AJAX p. 32

Ejemplo de petición síncrona // creación de un objeto XMLHttpRequest (no portable) var request = new XMLHttpRequest(); // especificación de método, URL y petición síncrona request.open("get", url, false); // envío (sin cuerpo de la petición por ser GET) request.send(null); // obtención de la respuesta síncrona if (request.status == 200) { var response = request.responsetext; // como alternativa, si es una respuesta XML var responsexml = request.responsexml; } else { // manejar el error... } Javascript y AJAX p. 33

Peticiones asíncronas: La funciónsend retorna inmediatamente, sin esperar la respuesta. Se registra una función de callback que se invoca cada vez que cambia el estado de la petición (propiedadreadystate): readystate == 0: sin inicializar. readystate == 1: conexión establecida. readystate == 2: petición recibida. readystate == 3: respuesta en proceso. readystate == 4: respuesta recibida. Javascript y AJAX p. 34

Ejemplo de petición asíncrona // creación de un objeto XMLHttpRequest (no portable) var request = new XMLHttpRequest(); // establecimiento de una función de callback request.onreadystatechange = function() { if(request.readystate == 4) { if(request.status == 200) { alert("received: " + req.responsetext); } else { { alert("error: returned status code " + request.status + " " + request.statustext); } } }; // especificación de método, URL y petición asíncrona request.open("get", url, true); // envío (sin cuerpo de la petición por ser GET) request.send(null); Javascript y AJAX p. 35

Creación de XMLHttpRequest portable var request = null; try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (b) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (c) { request = null; } } if(!request && typeof XMLHttpRequest!= "undefined") { request = new XMLHttpRequest; } Javascript y AJAX p. 36

Referencias David Flanagan. JavaScript: The Definitive Guide (5th Ed.) O Reilly. Javascript y AJAX p. 37