Title: XHTML DINAMICO AVANZADO
1- XHTML DINAMICO AVANZADO
- (AJAX Y DOM)
2AJAX
- Conceptos y fundamentos bƔsicos
- Patrones de Ajax
- Ejemplos prƔcticos.
- LibrerĆas estĆ”ndares
3BibliografĆa
- Ajax in Practice
- Visual Quickstart Guide CSS, DHTML, and Ajax,
Fourth Edition - DHTML Utopia. Modern Web Design Using JavaScript
DOM - Ajax Un Nuevo acercamiento a las Aplicaciones
Web - http//www.ajaxhispano.com/ajax-nuevo-acercamiento
-aplicaciones-web.html - El objeto XMLHttpRequest
- http//www.programacionweb.net/articulos/articulo/
?num386
4Paso de parƔmetros (GET)
- En la peticiĆ³n AJAX podemos pasar parĆ”metros
tanto por POST como por GET a nuestro servidor. - Para pasar parƔmetros por GET ( por URL ) ,
usaremos una URL con parĆ”metros en la funciĆ³n
open independientemente de usar el mƩtodo GET o
POST, por ejemplo - oXMLHttp.open('GET',Ā 'pagina.php?parametro'Ā Ā esc
ape(parametro))Ā
5setRequestHeader (mƩtodo)
- El mƩtodo setRequestHeader aƱade un encabezado
HTTP a la peticiĆ³n HTTP a travĆ©s del objeto
XMLHttpRequest. - UtilizaciĆ³n oXMLHttpRequest.setRequestHeader (
sNombre, sValor) - sNombre - Nombre del encabezado HTTP.
- sValor - Valor del encabezado HTTP.
- El parametro sNombre no podrĆ” ser Accept-Charset,
Accept-Encoding, Content-Length, Expect, Date,
Host, Keep-Alive, Referer, TE, Trailer,
Transfer-Encoding ni Upgrade, tampoco podrĆ”
contener espacios, puntos o saltos de lĆnea. - El parametro sValor no podrĆ” contener saltos de
lĆnea. - Solo podemos utilizar setRequestHeader cuando
el valor de readyState sea 1.
6Paso de parƔmetros (POST)
- Para pasarlos por POST, deberemos usar el mƩtodo
POST en la funciĆ³n open, configurar el tipo de
informaciĆ³n que enviamos y por Ćŗltimo pasamos los
parĆ”metros desde la funciĆ³n send, veamos un
ejemplo - oXMLHttp.open('POST','pagina.php')Ā
- try
- oXMLHttp.setRequestHeader("Content-Type",
- "application/x-www-form-urlencoded")
- catch (e)
- oXMLHttp.send(Ā 'parametro'Ā Ā escape(parametro))Ā
72Āŗ Ejemplo. Paso de parĆ”metros
- Vamos a pasar 3 parƔmetros a un ASP que
simplemente devuelve las variables que han
llegado por mƩtodo GET o POST - Los parƔmetros son nombreHTML dinƔmico avanzado
(Ajax y DOM), fechainicio"16/10/2007 y
fechafin"24/10/2007"
- Los pasos a seguir serĆan los siguientes
- Crear el objeto
- Establecer la comunicaciĆ³n con el servidor
usando AJAX. - Si es con el mƩtodo GET adjuntar los parƔmetros a
la direcciĆ³n - Hacer la peticiĆ³n
- Si es el mƩtodo POST, especifica quƩ tipo de
datos llegarƔn al servidor - El servidor nos prepararƔ y devolverƔ una
informaciĆ³n - Si todo es correcto mostrar la informaciĆ³n
devuelve - Traspaso de datos
http//127.0.0.1/ajax/ej2/index.html
8status (atributo)
- El atributo statusText devuelve el cĆ³digo del
estado HTTP de la transmisiĆ³n devuelto por el
servidor web. - UtilizaciĆ³n iEstado oXMLHttpRequest.status
- iEstado - Entero con el cĆ³digo HTTP de estado.
- La propiedad status e utiliza para comprobar
que no ha habido problemas en la comunicaciĆ³n con
el servidor, podremos acceder a los datos siempre
y cuando el estado de la conexiĆ³n devuelto con
readyStatechange sea igual a 3 (recibiendo) o 4
(a punto). - El cĆ³digo de estado HTTP para una transmisiĆ³n
correcta es el 200, serĆ” conveniente comprobar
este dato antes de acceder a los datos con
responseXML o responseText.
9status (atributo)
- 100 Continua
- 101 Cambio de protocolo
- 200 OK
- 201 Creado
- 202 Aceptado
- 203 InformaciĆ³n no oficial
- 204 Sin Contenido
- 205 Contenido para reset
- 206 Contenido parcial
- 300 MĆŗlpiples posibilidades
- 301 Mudado permanentemente
- 302 Encontrado
- 303 Vea otros
- 304 No modificado
- 305 Utilice un proxy
- 307 RedirecciĆ³n temporal
- 400 Solicitud incorrecta
- 401 No autorizado
- 402 Pago requerido
405 MĆ©todo no permitido 406 No aceptable 407
Proxy requerido 408 Tiempo de espera agotado 409
Conflicto 410 No mapas disponible 411 Requiere
longitud 412 FallĆ³ precondiciĆ³n 413 Entidad de
solicitud demasiado larga 414 URI de solicitud
demasiado largo 415 Tipo de medio no
soportado 416 Rango solicitado no disponible 417
FallĆ³ expectativa 500 Error interno 501 No
implementado 502 Pasarela incorrecta 503 Servicio
no disponible 504 Tiempo de espera de la pasarela
agotado 505 VersiĆ³n de HTTP no soportada
103Āŗ Ejemplo. Llamar a una pĆ”gina que no existe
- Vamos a llamar a una pƔgina noexiste.asp y vamos
a ver que nos envĆa el objeto. QuĆ© ocurrirĆ” si
llamamos a oXMLHttp.responseTextĀ ?
- Los pasos a seguir serĆan los siguientes
- Crear el objeto
- Establecer la comunicaciĆ³n con el servidor usando
AJAX. - Hacer la peticiĆ³n
- El servidor nos prepararĆ” y devolverĆ” una
informaciĆ³n - Si el cĆ³digo es 404 mostrar un mensaje de que no
existe la pĆ”gina - Si el cĆ³digo es de error (ltgt200) entonces
mostramos el cĆ³digo - Si todo es correcto entonces mostrar la respuesta
- Control de errores
http//127.0.0.1/ajax/ej3/index.html
114Āŗ Ejemplo. Devolver datos de Access
- Disponemos de una base de datos Access,
usuarios.mdb, que contiene una tabla Alumnos. - Crear una pƔgina HTML con un enlace y un
textarea, que al pulsar haga una llamada a un ASP
que consulte todos los alumnos, devuelva los
datos y los inserte en el campo textarea el
listado de todos los alumnos. - Consulta en una base de datos
- Traspaso de diferentes campos en una llamada
http//127.0.0.1/ajax/ej4/index.html
125Āŗ Ejemplo. Servicios y acciones
- Disponemos de una base de datos Access,
edificios.mdb, que contiene dos tablas Edificio y
Unidad. - Crear una pƔgina HTML con dos desplegables, uno
para los edificios y otro para las unidades de
ese edificio. Al pulsar un edificio, se hace una
llamada que consulta en un APS - Concepto de Servicios
- Devolver cĆ³digo Javascript
- Uso de tipos de eventos
http//127.0.0.1/ajax/ej5/index.html
136Āŗ Ejemplo. Mejorando el ejemplo anterior
- El objetivo del ejercicio es mejorar el 5Āŗ
ejercicio.
- Consulta de los edificios desde la base de datos
- ConversiĆ³n del fichero de HTML a ASP
- Organizar cĆ³digo
- Clase cXMLHttpRequest.js
- acciones.js
- GestiĆ³n en array de todos los objetos
cXMLHttpRequest - Pasar un parĆ”metro a la funciĆ³n que gestiona lo
que llega de la peticiĆ³n AJAX - Liberar todos los objetos
- Concepto de bloqueos
- ReutilizaciĆ³n de cĆ³digo
http//127.0.0.1/ajax/ej6/index.asp
147Āŗ Ejemplo. Noticias dinĆ”micas
- Disponemos de una base de datos Access,
noticias.mdb, que contiene una tabla con noticia. - Vamos a crear un tablĆ³n dinĆ”mico de
- noticias en la pƔgina Plantilla HTML que se ha
dejado como material. - Cada 10 segundos se escoge aleatoriamente una
noticia y se actualiza en la secciĆ³n
correspondiente de la pƔgina - Uso de temporizadores
- ModificaciĆ³n de contenido en etiquetas
15innerHTML (Javascript)
- innerHTML sirve para "escribir" dentro de un
elemento HTMLPor ejemplo, si tienes un div
ltdiv id"pepe"gtlt/divgtPuedes utilizar este
cĆ³digo para poner algo dentrodocument.getElemen
tById('pepe').innerHTML 'Hola, soy yo'
16setTimeout (Javascript)
- Esta funciĆ³n crea un temporizador el cual dispara
un reloj con los milisegundos que indicamos. Al
cumplirse el tiempo indicado se ejecuta el cĆ³digo
que le hayamos indicado. - var identificador setTimeout("expresiĆ³n-javascri
pt",milisegundos) - La funciĆ³n devuelve un identificador cada vez que
se ejecuta. Este nĆŗmero podemos almacenarlo en
una variable para utilizarlo posteriormente en
otros mƩtodos (por ejemplo clearTimeout()).
17clearTimeout (Javascript)
- Su efecto es el de detener la ejecuciĆ³n de un
temporizador lanzado con setTimeout. - clearTimeout (identificador)
18Generar un nĆŗmero aleatorio (ASP)
- Randomize
- Necesario antes de llamar a Rnd() para conseguir
que los nĆŗmeros no se repitan. - Rnd(Ā )
- Genera un nĆŗmero, pseudo aleatorio, entre 0 y 1.
- Debe apoyarse en Randomize para evitar que se
repita.