Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo
Prcticas
AJAX
Asynchronous JavaScript and XML Oscar Cubo Medina <ocubo@.upm.es>
Programacin Web en Servidor
INEM 2006/2007
AJAX
Ejemplo
Prcticas
Contenidos
Tecnologa AJAX Introduccin Objeto XMLHttpRequest Simple AJAX Code-Kit Lectura adicional Ejemplo prctico Pasos Requisitos
AJAX
Ejemplo
Prcticas
Tecnologa AJAX Introduccin Objeto XMLHttpRequest Simple AJAX Code-Kit Lectura adicional Ejemplo prctico Prcticas
AJAX Introduccin
Ejemplo
Prcticas
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
Carga de detalles de un elemento en un listado
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
Carga de detalles de un elemento en un listado Ejecucin de mltiples acciones (dar de alta + asociar)
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
Carga de detalles de un elemento en un listado Ejecucin de mltiples acciones (dar de alta + asociar) Generacin de listas ordenadas
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
Carga de detalles de un elemento en un listado Ejecucin de mltiples acciones (dar de alta + asociar) Generacin de listas ordenadas Votacin + actualizacin de resultados
AJAX Introduccin
Ejemplo
Prcticas
Posibles usos
Cundo se utiliza? Cuando es necesario actualizar una parte de la pgina sin tener que recargarla completamente.
Carga de detalles de un elemento en un listado Ejecucin de mltiples acciones (dar de alta + asociar) Generacin de listas ordenadas Votacin + actualizacin de resultados ...?
AJAX Introduccin
Ejemplo
Prcticas
Ventajas e inconvenientes
Ventajas
Mejor experiencia de
usuario
Recuperacin asncrona Interfaz de escritorio en
servidor
No precisa plugins
AJAX Introduccin
Ejemplo
Prcticas
Fundamentos
AJAX XMLHttpRequest
Ejemplo
Prcticas
El objeto XMLHttpRequest
Permite realizar peticiones Web desde javascript Incluido originalmente slo en IE Actualmente soportado en la API de javascript
AJAX XMLHttpRequest
Ejemplo
Prcticas
El objeto XMLHttpRequest
Permite realizar peticiones Web desde javascript Incluido originalmente slo en IE Actualmente soportado en la API de javascript
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funciones I
Open
Permite abrir un canal de
send (datos)
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funciones II
abort ()
AJAX XMLHttpRequest
Ejemplo
Prcticas
Propiedades I
Respuesta responseText Texto devuelto por el servidor responseXML Equivalente a la anterior pero con formato DOM Control de operacin status Cdigo de respuesta del servidor (cdigo HTML) statusText Texto asociado al cdigo de respuesta
AJAX XMLHttpRequest
Ejemplo
Prcticas
Propiedades II
Estado de la peticin readyState Estado de la peticin onreadystatechange Funcin que se ejecuta al nalizar una peticin asncrona Cdigo 0 1 2 3 4 Signicado Sin inicializar Abierta conexin Enviada peticin Recibiendo datos Cargado (uninitialized ) (opened ) (sent ) (receiving ) (loaded )
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
Open
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
Open
Send
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
Pe
Open
Send
n tici
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
u sp Re ta es
Pe
Open
Send
n tici
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
u sp Re ta es
Pe
Open
Send
n tici
AJAX XMLHttpRequest
Ejemplo
Prcticas
Funcionamiento
new XmlHttpRequest
u sp Re ta es
onreadystatechange
Pe
Open
Send
n tici
AJAX XMLHttpRequest
Ejemplo
Prcticas
Esquema de uso I
AJAX XMLHttpRequest
Ejemplo
Prcticas
Esquema de uso II
Peticin de informacin
// Funcin de finalizacin http.onreadystatechange = fn; // Abrir la conexin http.open("GET", "http://url/", true); // Enviar la peticin http.send(null);
AJAX XMLHttpRequest
Ejemplo
Prcticas
AJAX SACK
Ejemplo
Prcticas
SACK
Simple AJAX Code-Kit
AJAX simplicado Recubre objeto XMLHttpRequest Control automtico y transparente Enteramente javascript Poco peso
SACK is exactly what it says it is: A simple set of code to allow you to put AJAX into your webpages with none of the fuss or overhead of other packages. Just AJAX, just simple.
AJAX SACK
Ejemplo
Prcticas
Esquema de uso
Peticin AJAX con SACK
document.getElementById(id).innerHTML = "Actualizando"; ajax = new sack(); ajax.reset(); ajax.element = id; ajax.requestFile = http://url/fichero; ajax.method = POST; ajax.setVar(id, productos); ajax.runAJAX(); // Ejecutar la peticin
AJAX Referencias
Ejemplo
Prcticas
AJAX Referencias
Ejemplo
Prcticas
Gregory Wild-Smith. Twilightuniverse - simple ajax code kit, 2007. URL http://www.twilightuniverse.com/resources/code/sack/.
AJAX Referencias
Ejemplo
Prcticas
Tutoriales
Jos Manuel Alarcn. Ajax hagamos un ejemplo!, 2007. URL http://geeks.ms/search/SearchResults.aspx?q= ajax&u=2121&o=DateAscending. AsH. Ajax tutorials, 2007. URL http://vyk1.spaces.live.com/Blog/cns! EBE3A761F939F926!1051.entry. Oscar Cubo Medina. Tutorial de ajax, 2007. URL http: //laurel.datsi.fi.upm.es/~ocubo/labs/tutoriales/ajax.
AJAX
Ejemplo
Prcticas
Tecnologa AJAX Ejemplo prctico Pasos Requisitos Diseo de la solucin Interfaz HTML AJAX cliente AJAX Servidor Prcticas
AJAX Pasos
Ejemplo
Prcticas
Pasos a cumplimentar
Diseo 1 Denir requisitos
2 3 4
AJAX Pasos
Ejemplo
Prcticas
Pasos a cumplimentar
Diseo 1 Denir requisitos
2 3 4
Ciclo de implementacin
1 2 3 4
Crear la estructura de interfaz Crear el objeto AJAX (sin operaciones) Implementar cada operacin por separado Pruebas
Programacin Web en Servidor
AJAX Requisitos
Ejemplo
Prcticas
Operaciones matemticas
Sumatorio, factorial y bonacci
Sumatorio Suma de los valores de 1 a x x = x + (x 1) + (x 2) + + 2 + 1 Factorial Producto de los valores de 1 a x x! = x (x 1)! = x (x 1) (x 2) . . . 2 1 2 Fibonacci Es la serie matemtica 1, 1, 2, 3, 5, 8, 13, 21, F (x) = F (x 1) + F (x 2)
Actualizacin en tiempo realTM
2
http://es.wikipedia.org/wiki/Sucesin_de_Fibonacci
Programacin Web en Servidor
AJAX Diseo
Ejemplo
Prcticas
Estructura de directorios
Proyecto
index.php ajax.php lib / includes operaciones.php ... scripts tw-sack.js ajax.js ... tpl style.css img1.jpg img2.png ...
AJAX Diseo
Ejemplo
Prcticas
Estructura de la interfaz
AJAX Diseo
Ejemplo
Prcticas
4 operaciones diferentes Calcular sumatorio Calcular factorial Calcular bonacci Calcular todos
Ejemplo
Prcticas
Interfaz HTML I
Tipo de documento
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Ejemplo
Prcticas
Interfaz HTML II
Cabecera del documento
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>AJAX - Operaciones matemticas</title> <link media="screen" href="css/estilo.css" type="text/css" rel="stylesheet" /> <script type="text/javascript" language="javascript" src="scripts/tw-sack.js"></script> <script type="text/javascript" language="javascript" src="scripts/ajax.js"></script> </head>
Ejemplo
Prcticas
Ejemplo
Prcticas
Interfaz HTML IV
Ejemplo
Prcticas
Interfaz HTML V
Generacin de enlaces
for($i=0; $i<16;$i++) { echo "<tr>" ."<td><span onclick=\"ajax.Sum($i)\">sum($i)</span></td>" ."<td><span onclick=\"ajax.Fac($i)\">fac($i)</span></td>" ."<td><span onclick=\"ajax.Fib($i)\">fib($i)</span></td>" ."<td><span onclick=\"ajax.All($i)\">all($i)</span></td>" ."</tr>"; } // for
Ejemplo
Prcticas
Ejemplo
Prcticas
Ejemplo
Prcticas
Crear la clase
var ajax = new Ajax(ajax.php, Calculando...);
Ejemplo
Prcticas
Ejemplo
Prcticas
Ejemplo
Prcticas
Fibonacci
function fibonacci($x) { if ($x < 2) return 1; return ( fibonacci($x-1) + fibonacci($x-2) ); } $res = fibonacci($_POST[x]);
AJAX
Ejemplo
Prcticas
AJAX Prctica 1
Ejemplo
Prcticas
Votacin bsica
Sistema de votacin para el premio pulitzer Dispone de X artculos candidatos La votacin se realiza va Web Cada persona puede asignar de 0 a 5 puntos a cada candidato El candidato con ms puntos ganar el premio ;-) Se necesita actualizar la clasicacin en tiempo realTM
AJAX Prctica 2
Ejemplo
Prcticas
Votando en Eurovisin
Sistema de votacin para eurovisin Disponemos de X canciones candidatas Cada usuario puede otorgar 5,4,3,2 y 1 votos a 5 candidaturas diferentes Cuando se acaba la serie de 5 se inicia una nueva votacin Gana el que ms votos tenga La clasicacin debe actualizarse en tiempo realTM
AJAX Prctica 3
Ejemplo
Prcticas
Lista TO-DO
Gestor de tareas a realizar Dispone de un listado de tareas ordenado por prioridad. Cada tarea se compone de un nombre y una descripcin Cada tarea tiene 5 niveles de prioridad En el listado de tareas se muestra slo el nombre y, al seleccionar una tarea, se muestran sus detalles Es posible aadir/borrar tareas