SlideShare una empresa de Scribd logo
1 de 36
Una introducción somera




DEW – Desarrollo web en cliente
Visión global
3/36


¿Qué es AJAX?

   Asynchronous Javascript And XML
     ●
        Presentación basada en HTML + CSS
     ●
         Datos en formato XML
     ●
         Detrás del escenario, objetos asíncronos XMLHTTPRequest en el
         propio navegador para el manejo de datos
     ●
         Javascript para hacer que todo funcione
   Realmente AJAX NO es un nuevo lenguaje, ni un nuevo producto
   Simplemente es una nueva forma de utilizar herramientas que ya existen
    en el mercado
   AJAX permite intercambiar datos con el servidor y actualizar “trozos” de
    una página web sin tener que recargar toda la página
4/36


Cómo funciona: un vistazo

   Desde el navegador escribimos código JS que obtiene datos del
    servidor según los necesite
   Cuando necesita más datos del servidor, detrás del telón JS utiliza
    el objeto XMLHTTPRequest para lanzar una petición
   NO se produce un refresco de página
   Mientras llegan los datos, JS NO detiene su ejecución, sino que
    está a la espera en segundo plano
   Cuando por fin llegan los datos, JS retoma esa acción
   De ahí que se llame asíncrono
   Los datos que vienen del servidor pueden ser XML o simplemente
    texto plano
Crono: inicio
HTML
CSS
Javascript: funciones y eventos
Manejo de timers en JavaScript
6/36


cronómetro v1: Descripción

   file:///home/moi/workspace2/stopwatch/v1.html
   Utilizar CSS para definir los estilos
      ●
          color de fondo
      ●
          tipo de letra
      ●
          bordes
      ●
          tamaño de los marcos
      ●
          ...
   Definir un timer que se ejecute cada décima de segundo
   Handlers de eventos
      ●
          stop_handler
      ●
          reset_handler
      ●
          start_handler
      ●
          tick_handler
   IMPEDIR que se pueda iniciar el timer si ya está iniciado
7/36


Timers

   INICIAR



     ●
         timer: variable global al script
     ●
         tick_handler: función que se ejecutará cada vez que se alcance el
         tiempo especificado
     ●
         100: tiempo en milisegundos que queremos que se ejecute el timer
   DETENER


     ●
         timer: variable global sobre la que iniciamos
8/36


cronómetro v2: Sistema de puntuación

file:///home/moi/workspace2/stopwatch/v2.html
   Incluir una caja de texto para establecer la velocidad del timer
      ●
         Sólo se puede modificar la velocidad cuando el timer está detenido
   Incluir un panel para llevar la puntuación <x/y>
      ●
         x es el número de aciertos
      ●
          y es el número de paradas del timer
   Un acierto ocurre cuando detenemos el cronómetro cuando hay 0 puntitos (.)
   Cada vez que detenemos el timer, se incrementa el número de intentos
   Si el timer está parado, y pulso Stop, NO contabilizar un nuevo intento (ni un nuevo
    acierto, si ya de por sí estuviera parado en 0 puntitos (.)
Crono: autenticación
Listas asociativas PHP
AJAX open/send
10/36


Cómo funciona: un vistazo
11/36


El objeto XMLHttpRequest

   Ejemplo simple1 funcionando aquí
   Todos los navegadores modernos soportan el objeto
    XMLHttpRequest
   Se utiliza para intercambiar datos en segundo plano con un servidor
   Creación de un objeto XMLHttpRequest:
     ●
        variable = new XMLHttpRequest()
   En versiones antiguas de IE:
     ●
         variable = new ActiveXObject(“Microsoft.XMLHTTP”);
   En nuestra página, deberemos comprobar el navegador para crear el
    objeto XMLHttpRequest de acuerdo a éste
12/36


El objeto XMLHttpRequest
13/36


Cliente: Código (1)
14/36


Cliente: código (2)
15/36


Cliente: Enviar una petición al servidor

   Utilizamos los métodos open y send del objeto XMLHttpRequest




   El tercer parámetro de open...
      ●
         true, la llamada es asíncrona
     ●
         false, la llamada es síncrona
   send: recibe como parámetro los pares clave/valor que queremos
    enviar en el POST
16/36


Cliente: Enviar una petición al servidor (2)

   Si en el método send enviamos parámetros, deberemos especificar
    su formato
   Para ello, especificaremos la cabecera Content-Type de HTTP
    utilizando el método setRequestHeader del objeto XMLHttpRequest
17/36


Servidor: código
18/36


Cliente: recepción de respuesta
19/36


Cliente: recepción de la respuesta (2)

   onreadystatechange
     ●
        Este evento se dispara cada vez que se produzca un cambio en el
        objeto XMLHttpRequest
      ●
          La propiedad readyState contiene el estado actual
   readyState: Posibles valores
      ●
        0: estado inicial del objeto
      ●
          1: El método open se ha ejecutado sin problemas
      ●
          2: Se ha enviado la solicitud al servidor
      ●
          3: Se han recibido las cabeceras HTTP de la respuesta. NO ha llegado
          el cuerpo
      ●
          4: La transferencia de datos ha finalizado. Se puede procesar ya la
          respuesta del servidor
20/36


Cliente: recepción de la respuesta (3)

   Comprobar status == 200
     ●
       Cuando llega la respuesta, es conveniente comprobar el valor de la
       propiedad status
      ●
          200. Todo bien, solicitud procesada correctamente
      ●
          401. NO hay autorización para acceder al recurso
      ●
          404. NO se encuentra el recurso (Normalmente URL errónea)
      ●
          500. Error interno del servidor
   En caso de error, en statusText tenemos el detalle del error
                                                             responseText
                                                        Recuperamos la respuesta
                                                            como texto plano
21/36


Ver ejemplo simple1

   Abrir ficheros y probar ejecución
22/36


Cronómetro V3: validación PHP, sin AJAX

   Mostrar funcionamiento aquí
   Leer enunciado de la práctica
23/36


Cronómetro V4: validación con AJAX

   Mostrar funcionamiento aquí
   Leer enunciado de la práctica
Fundamentos
2 técnicas de programación JS
DOM
25/36


Observa y comenta

   ¿Funciona?
   ¿Cómo se puede mejorar?
   ¿Qué problemas presenta?
   ¿Cómo se llama esta técnica de
    programación?



   Respuestas
     ●
       Sí
     ●
         Colocando el código JS
         envuelto en una función
     ●
         Se mezcla código HTML con JS.
         Difícil mantenimiento
     ●   Función embebida
26/36


Observa y comenta

   ¿Funciona?
   ¿Qué hace?
   ¿Cómo se llama esta técnica?
   ¿Quién invoca a esta función para inicializar todo?




   Respuestas
     ●
       Sí
                                                                                 Sin paréntesis
     ●
         Enlaza el evento onclick al elemento llamado titulo
     ●   Enlace dinámico de eventos
     ●
         En el elemento body, asociamos al evento onload la función inicializa
27/36


DOM: ¿Qué es?

   Document Object Model
   Estándar consolidado y aceptado internacionalmente W3C
   Se trata de la API para operar sobre la interfaz HTML
28/36


DOM: Recorrer elementos de un formulario
29/36

Cronómetro v5: formulario de nuevo Jugador –
validaciones

   Mostrar práctica 5 funcionando aquí
   Leer enunciado práctica 5
Variables de sesión
session_start
session_destroy
$_SESSION[“mi_variable”]
31/36


Sesión y variables de sesión

   Una sesión es...
     ●
        ...información de cada usuario almacenada y gestionada por el servidor
   La sesión comienza...
      ●
        ...en el momento en el que el usuario se conecta al servidor
   La sesión finaliza...
      ●
          ...tras x minutos de inactividad
      ●
          ...si la finalizacimos explícitamente
   Las variables de sesión...
      ●
          ...almacenan información de cualquier tipo por usuario
      ●
          Hasta el momento hemos visto que el tiempo de vida de una variable es la
          página
32/36


session_start, session_destroy

   session_start de PHP se utiliza para...
      ●
        ...crear una sesión de usuario y/o...
      ●
          ...si la sesión ya ha sido creada previamente, la continua
      ●
          Debemos invocar a este método siempre que vayamos a
          manejar la sesión de un usuario antes de manipularla
   session_destroy de PHP se utiliza para...
      ●
          ...eliminar todas las variables de sesión de un usuario
      ●
          ...es una forma explícita de finalizar su sesión
33/36


Almacenar una variable de sesión

   $_SESSION[“mi_variable”] = 7
   A partir de este momento, la variable $_SESSION[“mi_variable”] es
    visible desde cualquier página de mi servidor que visite el usuario
   Es una especie de variable Súper Global
   IMPORTANTE: no olvides session_start()
      ●
        Tanto para leer como para escribir variables de sesión
        debemos previamente haber invocado al método
        session_start()
34/36


Unir todas las piezas

   Pensemos en la práctica de la validación de usuarios
   Al insertar una pareja usuario/clave correcta, podríamos crear una
    variable de sesión $_SESSION[“usuario”] = $usuario
   En la página del juego, comprobar si $_SESSION[“usuario”] es
    vacío (isset), en cuyo caso el usuario NO se ha validado
   De ser así, redirigirlo a la pantalla de login
   En la pantalla de login, eliminar $_SESSION[“usuario”], de modo
    que indicamos que NO se ha validado
   Dotar al juego de un botón de Salir, que elimine las variables de
    sesión
AJAX síncrono
XMLHttpRequest.open
36/36


Async=false

   Si modificamos el tercer parámetro del método open y lo establecemos a
    false, indicamos que la comunicación va a ser síncrona
      ●
         xmlhttp.open("GET","mi_pagina.php",false);
   El uso del modo asíncrono NO SE RECOMIENDA
   La ejecución se detendrá tras el método SEND
   El cliente quedará a la espera de la respuesta del servidor
   NO hay que escribir una función onreadystatechange
   Simplemente hay que escribir el código justo a continuación del send
     ●
         xmlhttp.open("GET","mi_pagina.php",false);
     ●
         xmlhttp.send();
     ●
         document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Más contenido relacionado

Similar a Introducción a AJAX

SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSlorenapardo
 
Curso de Spring: Transacciones
Curso de Spring: TransaccionesCurso de Spring: Transacciones
Curso de Spring: TransaccionesJano González
 
Presentación rc 1
Presentación rc 1Presentación rc 1
Presentación rc 1Margoz87
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2Luis Cigarroa
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 

Similar a Introducción a AJAX (20)

Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 
Curso de Spring: Transacciones
Curso de Spring: TransaccionesCurso de Spring: Transacciones
Curso de Spring: Transacciones
 
Presentación rc 1
Presentación rc 1Presentación rc 1
Presentación rc 1
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 
S2-PD2-1.2 Web Forms
S2-PD2-1.2 Web FormsS2-PD2-1.2 Web Forms
S2-PD2-1.2 Web Forms
 
S2-PD2.pptx
S2-PD2.pptxS2-PD2.pptx
S2-PD2.pptx
 
S2-PD2.pptx
S2-PD2.pptxS2-PD2.pptx
S2-PD2.pptx
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2
 
Computación 3
Computación 3Computación 3
Computación 3
 
Examen 2 s,o,
Examen 2 s,o,Examen 2 s,o,
Examen 2 s,o,
 
Mrtg ubuntu
Mrtg ubuntuMrtg ubuntu
Mrtg ubuntu
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
JavaScript.pptx
JavaScript.pptxJavaScript.pptx
JavaScript.pptx
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Ajax
AjaxAjax
Ajax
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 

Más de Moisés Pérez Delgado

Conceptos básicos de electricidad en mi entorno
Conceptos básicos de electricidad en mi entornoConceptos básicos de electricidad en mi entorno
Conceptos básicos de electricidad en mi entornoMoisés Pérez Delgado
 
Conceptos básicos de electricidad: elementos en mi entorno
Conceptos básicos de electricidad: elementos en mi entornoConceptos básicos de electricidad: elementos en mi entorno
Conceptos básicos de electricidad: elementos en mi entornoMoisés Pérez Delgado
 

Más de Moisés Pérez Delgado (20)

02 resistencias y condensadores
02 resistencias y condensadores02 resistencias y condensadores
02 resistencias y condensadores
 
02 croquis y canalizacion
02 croquis y canalizacion02 croquis y canalizacion
02 croquis y canalizacion
 
02 carcasa y fuente
02 carcasa y fuente02 carcasa y fuente
02 carcasa y fuente
 
03 circuitos en cc
03 circuitos en cc03 circuitos en cc
03 circuitos en cc
 
Conceptos básicos de electricidad en mi entorno
Conceptos básicos de electricidad en mi entornoConceptos básicos de electricidad en mi entorno
Conceptos básicos de electricidad en mi entorno
 
Conceptos básicos de electricidad
Conceptos básicos de electricidadConceptos básicos de electricidad
Conceptos básicos de electricidad
 
Conceptos básicos de electricidad: elementos en mi entorno
Conceptos básicos de electricidad: elementos en mi entornoConceptos básicos de electricidad: elementos en mi entorno
Conceptos básicos de electricidad: elementos en mi entorno
 
Naturales temas 01 al 04
Naturales   temas 01 al 04Naturales   temas 01 al 04
Naturales temas 01 al 04
 
Tema 02 elementos del medio natural
Tema 02   elementos del medio naturalTema 02   elementos del medio natural
Tema 02 elementos del medio natural
 
Naturales temas 05 al 07
Naturales   temas 05 al 07Naturales   temas 05 al 07
Naturales temas 05 al 07
 
Matemáticas: Temas 1 a 4
Matemáticas: Temas 1 a 4Matemáticas: Temas 1 a 4
Matemáticas: Temas 1 a 4
 
Tema 1. El planeta Tierra
Tema 1. El planeta TierraTema 1. El planeta Tierra
Tema 1. El planeta Tierra
 
La Tierra
La TierraLa Tierra
La Tierra
 
Cálculo de circuitos: Thévenin
Cálculo de circuitos: ThéveninCálculo de circuitos: Thévenin
Cálculo de circuitos: Thévenin
 
Teoría de circuitos: superposición
Teoría de circuitos: superposiciónTeoría de circuitos: superposición
Teoría de circuitos: superposición
 
Resolución de circuitos con Kirchoff
Resolución de circuitos con KirchoffResolución de circuitos con Kirchoff
Resolución de circuitos con Kirchoff
 
Corriente alterna
Corriente alternaCorriente alterna
Corriente alterna
 
Que sabes de electricidad
Que sabes de electricidadQue sabes de electricidad
Que sabes de electricidad
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Qué sabes de word?
Qué sabes de word?Qué sabes de word?
Qué sabes de word?
 

Introducción a AJAX

  • 1. Una introducción somera DEW – Desarrollo web en cliente
  • 3. 3/36 ¿Qué es AJAX?  Asynchronous Javascript And XML ● Presentación basada en HTML + CSS ● Datos en formato XML ● Detrás del escenario, objetos asíncronos XMLHTTPRequest en el propio navegador para el manejo de datos ● Javascript para hacer que todo funcione  Realmente AJAX NO es un nuevo lenguaje, ni un nuevo producto  Simplemente es una nueva forma de utilizar herramientas que ya existen en el mercado  AJAX permite intercambiar datos con el servidor y actualizar “trozos” de una página web sin tener que recargar toda la página
  • 4. 4/36 Cómo funciona: un vistazo  Desde el navegador escribimos código JS que obtiene datos del servidor según los necesite  Cuando necesita más datos del servidor, detrás del telón JS utiliza el objeto XMLHTTPRequest para lanzar una petición  NO se produce un refresco de página  Mientras llegan los datos, JS NO detiene su ejecución, sino que está a la espera en segundo plano  Cuando por fin llegan los datos, JS retoma esa acción  De ahí que se llame asíncrono  Los datos que vienen del servidor pueden ser XML o simplemente texto plano
  • 5. Crono: inicio HTML CSS Javascript: funciones y eventos Manejo de timers en JavaScript
  • 6. 6/36 cronómetro v1: Descripción  file:///home/moi/workspace2/stopwatch/v1.html  Utilizar CSS para definir los estilos ● color de fondo ● tipo de letra ● bordes ● tamaño de los marcos ● ...  Definir un timer que se ejecute cada décima de segundo  Handlers de eventos ● stop_handler ● reset_handler ● start_handler ● tick_handler  IMPEDIR que se pueda iniciar el timer si ya está iniciado
  • 7. 7/36 Timers  INICIAR ● timer: variable global al script ● tick_handler: función que se ejecutará cada vez que se alcance el tiempo especificado ● 100: tiempo en milisegundos que queremos que se ejecute el timer  DETENER ● timer: variable global sobre la que iniciamos
  • 8. 8/36 cronómetro v2: Sistema de puntuación file:///home/moi/workspace2/stopwatch/v2.html  Incluir una caja de texto para establecer la velocidad del timer ● Sólo se puede modificar la velocidad cuando el timer está detenido  Incluir un panel para llevar la puntuación <x/y> ● x es el número de aciertos ● y es el número de paradas del timer  Un acierto ocurre cuando detenemos el cronómetro cuando hay 0 puntitos (.)  Cada vez que detenemos el timer, se incrementa el número de intentos  Si el timer está parado, y pulso Stop, NO contabilizar un nuevo intento (ni un nuevo acierto, si ya de por sí estuviera parado en 0 puntitos (.)
  • 11. 11/36 El objeto XMLHttpRequest  Ejemplo simple1 funcionando aquí  Todos los navegadores modernos soportan el objeto XMLHttpRequest  Se utiliza para intercambiar datos en segundo plano con un servidor  Creación de un objeto XMLHttpRequest: ● variable = new XMLHttpRequest()  En versiones antiguas de IE: ● variable = new ActiveXObject(“Microsoft.XMLHTTP”);  En nuestra página, deberemos comprobar el navegador para crear el objeto XMLHttpRequest de acuerdo a éste
  • 15. 15/36 Cliente: Enviar una petición al servidor  Utilizamos los métodos open y send del objeto XMLHttpRequest  El tercer parámetro de open... ● true, la llamada es asíncrona ● false, la llamada es síncrona  send: recibe como parámetro los pares clave/valor que queremos enviar en el POST
  • 16. 16/36 Cliente: Enviar una petición al servidor (2)  Si en el método send enviamos parámetros, deberemos especificar su formato  Para ello, especificaremos la cabecera Content-Type de HTTP utilizando el método setRequestHeader del objeto XMLHttpRequest
  • 19. 19/36 Cliente: recepción de la respuesta (2)  onreadystatechange ● Este evento se dispara cada vez que se produzca un cambio en el objeto XMLHttpRequest ● La propiedad readyState contiene el estado actual  readyState: Posibles valores ● 0: estado inicial del objeto ● 1: El método open se ha ejecutado sin problemas ● 2: Se ha enviado la solicitud al servidor ● 3: Se han recibido las cabeceras HTTP de la respuesta. NO ha llegado el cuerpo ● 4: La transferencia de datos ha finalizado. Se puede procesar ya la respuesta del servidor
  • 20. 20/36 Cliente: recepción de la respuesta (3)  Comprobar status == 200 ● Cuando llega la respuesta, es conveniente comprobar el valor de la propiedad status ● 200. Todo bien, solicitud procesada correctamente ● 401. NO hay autorización para acceder al recurso ● 404. NO se encuentra el recurso (Normalmente URL errónea) ● 500. Error interno del servidor  En caso de error, en statusText tenemos el detalle del error responseText Recuperamos la respuesta como texto plano
  • 21. 21/36 Ver ejemplo simple1  Abrir ficheros y probar ejecución
  • 22. 22/36 Cronómetro V3: validación PHP, sin AJAX  Mostrar funcionamiento aquí  Leer enunciado de la práctica
  • 23. 23/36 Cronómetro V4: validación con AJAX  Mostrar funcionamiento aquí  Leer enunciado de la práctica
  • 24. Fundamentos 2 técnicas de programación JS DOM
  • 25. 25/36 Observa y comenta  ¿Funciona?  ¿Cómo se puede mejorar?  ¿Qué problemas presenta?  ¿Cómo se llama esta técnica de programación?  Respuestas ● Sí ● Colocando el código JS envuelto en una función ● Se mezcla código HTML con JS. Difícil mantenimiento ● Función embebida
  • 26. 26/36 Observa y comenta  ¿Funciona?  ¿Qué hace?  ¿Cómo se llama esta técnica?  ¿Quién invoca a esta función para inicializar todo?  Respuestas ● Sí Sin paréntesis ● Enlaza el evento onclick al elemento llamado titulo ● Enlace dinámico de eventos ● En el elemento body, asociamos al evento onload la función inicializa
  • 27. 27/36 DOM: ¿Qué es?  Document Object Model  Estándar consolidado y aceptado internacionalmente W3C  Se trata de la API para operar sobre la interfaz HTML
  • 28. 28/36 DOM: Recorrer elementos de un formulario
  • 29. 29/36 Cronómetro v5: formulario de nuevo Jugador – validaciones  Mostrar práctica 5 funcionando aquí  Leer enunciado práctica 5
  • 31. 31/36 Sesión y variables de sesión  Una sesión es... ● ...información de cada usuario almacenada y gestionada por el servidor  La sesión comienza... ● ...en el momento en el que el usuario se conecta al servidor  La sesión finaliza... ● ...tras x minutos de inactividad ● ...si la finalizacimos explícitamente  Las variables de sesión... ● ...almacenan información de cualquier tipo por usuario ● Hasta el momento hemos visto que el tiempo de vida de una variable es la página
  • 32. 32/36 session_start, session_destroy  session_start de PHP se utiliza para... ● ...crear una sesión de usuario y/o... ● ...si la sesión ya ha sido creada previamente, la continua ● Debemos invocar a este método siempre que vayamos a manejar la sesión de un usuario antes de manipularla  session_destroy de PHP se utiliza para... ● ...eliminar todas las variables de sesión de un usuario ● ...es una forma explícita de finalizar su sesión
  • 33. 33/36 Almacenar una variable de sesión  $_SESSION[“mi_variable”] = 7  A partir de este momento, la variable $_SESSION[“mi_variable”] es visible desde cualquier página de mi servidor que visite el usuario  Es una especie de variable Súper Global  IMPORTANTE: no olvides session_start() ● Tanto para leer como para escribir variables de sesión debemos previamente haber invocado al método session_start()
  • 34. 34/36 Unir todas las piezas  Pensemos en la práctica de la validación de usuarios  Al insertar una pareja usuario/clave correcta, podríamos crear una variable de sesión $_SESSION[“usuario”] = $usuario  En la página del juego, comprobar si $_SESSION[“usuario”] es vacío (isset), en cuyo caso el usuario NO se ha validado  De ser así, redirigirlo a la pantalla de login  En la pantalla de login, eliminar $_SESSION[“usuario”], de modo que indicamos que NO se ha validado  Dotar al juego de un botón de Salir, que elimine las variables de sesión
  • 36. 36/36 Async=false  Si modificamos el tercer parámetro del método open y lo establecemos a false, indicamos que la comunicación va a ser síncrona ● xmlhttp.open("GET","mi_pagina.php",false);  El uso del modo asíncrono NO SE RECOMIENDA  La ejecución se detendrá tras el método SEND  El cliente quedará a la espera de la respuesta del servidor  NO hay que escribir una función onreadystatechange  Simplemente hay que escribir el código justo a continuación del send ● xmlhttp.open("GET","mi_pagina.php",false); ● xmlhttp.send(); ● document.getElementById("myDiv").innerHTML=xmlhttp.responseText;