|
|
||||||||||||
|
Más AJaX de IntraWeb AJAX, acrónimo de Asynchronous JavaScript And XML (en inglés «JavaScript y XML asincrónicos»). Técnica de desarrollo web para crear aplicaciones interactivas mediante la combinación de tres tecnologías ya existentes: HTML (o XHTML) y hojas de estilos en cascada (CSS) para presentar la
información; Las aplicaciones AJAX usan navegadores web que soportan las tecnologías mencionadas más arriba. Entre estos se incluyen Mozilla, Firefox, Internet Explorer, Opera, Konqueror y Safari. (wiki) Intraweb se ha convertido en una libreria muy popular para hacer programas web. Hace transparente al programador muchos pequeños inconvenientes de la programación web. Por ejemplo para hacer el primer programa IntraWeb, no se necesita escribir ningún código HTML, además nuestra aplicación correrá en varios usuarios simultaneos de forma independiente, es decir el propio sistema se hace cargo de la gestion de diferentes sesiones de usuario. Son muchas más las ayudas que nos da IntraWeb para programar. Sin embargo hace uso del esquema clasico/tradicional de programacion WEB: La mayoría de las acciones del usuario en el 'navegador' disparan una petición HTTP al servidor web. El servidor efectúa un proceso (recopila información, procesa números, textos...), y le devuelve una pagina HTLM al cliente. Este es un modelo adaptado del uso original de la Web como un medio hipertextual, pero no la hace necesariamente buena para las aplicaciones de software. Cuando el usuario cambia un dato, este cambio puede implicar otros cambios en otros campos o en la información mostrada, pero este cambio se produce solo si refrescamos la página. En nuestra aplicación quisieramos una respuesta más activa de la web, cuando el usuario está introduciendo datos, se produzcan cambios en la página web sin refrescarla de nuevo, que solo se refresque la parte que cambia. Es aqui donde introducimos el concepto AJaX. El nucleo de un componente AJaX, consiste en un código JavaScript que se conecta con el servidor le hace peticiones, y maneja las respuestas. Somo estas respuestas, generalmente producen cambios en la interface del usuario, AJaX se asocia por extensión a librerias GUI en JavaScript que potencian el uso de ventanas y componentes más sofisticados que los tradicionales. Nosotros queremos un objetivo sencillo: Solo queremos intercambiar información con el servidor que produzcan cambios sencillos en la interface del usuario ( cambios de valores en etiquetas y campos) De momento nos centraremos en el motor de consulta haciendo comentario del script GpAjax.js, que sera nuestro primer acercamiento a esta técnica
Debido a las típicas diferencias entre los navegadores de microsoft con respecto a todos los demás, se tiene que probar con diferentes formas de crear un objeto request. Lo importante de este trozo de código, es que estamos creando el objeto que va a interrogar al servidor. Ahora viene la parte importante, tenemos que usar el objeto request para hacer una consulta a nuestro servidor IntraWeb. Pero IntraWeb tiene sus propias reglas a la hora de hacerle una consulta. Lo primero es que maneja la sesion de usuario automaticamente. La información de esta sesion de usuario va implicita en la consulta http , (en la propia URL y/o en los cookies). Asi que si no queremos complicarnos en manejar a más bajo nivel las consultas realizadas, dejaremos que sigan su camino normal como si fuera la accion de click en un boton. Aquí tenemos que revisar como hace IntraWeb para que una acción de un usuario se procese en un form en concreto, refiendose a un objeto de este form, pasandole algún parametro o comando, que va a producir una respuesta activa (devolviendo una respuesta inmediata como la descarga de un fichero) o pasiva ( haciendo operaciones internas que produciran el cambio en la página cuando se vuelve a cargar. IW utiliza comandos 'POST' para intercambiar información del usuario al servidor. Envia datos en los campos asociados a este POST * para que el servidor los procese, y añade al menos 4 campos más que van a indicar el form, el objeto y la acción o comando que se envia al objeto. IW_FormName : Nombre del objeto form que contiene el manejador de la respuesta. IW_FormClass: Nombre de la clase del objeto form de respuesta ( esta última puede ser no necesaria en nuestro caso, pero la mantendremos por compatibilidad ) IW_Action : Nombre del objeto que maneja la respuesta. IW_ActionParam : Parametros o comandos que se le pasan a ese objeto. * Recordaremos que para realizar una llamada POST, los datos se pasan como una secuencia de caracteres que utilizan el siguiente formato: NameField1="Value1"&NameField2="Value2".... Es decir los campos se representan con un nombre, el signo =, y un valor entre comillas. Y separando diferentes campos, se utiliza el signo &. Ahora tenemos los parametros para hacer la llamada AJaX:
Vemos que hacemos uso de una funcion updatePage. Esta funcion puede ser algo así como lo siguiente
Como el uso puede ser muy variado, es tu imaginación la que manda para dar respuestas del servidor a comandos AJaX, y procesar las respuestas en el navegador a base de JavaScript En cuentro ejemplo, la respuesta obtenida del servidor sera una secuencia de campos en formato: NameField1="Value1"|NameField2="Value2".... En updatePage, dividimos los campos separados por | y los enviamos de
uno a uno a una funcion abstracta Un ejemplo puede ser el siguiente
No es muy sofisticado pero es efectivo para muchos casos. La informacion HTML que genera nuestra aplicacion IntraWeb, suelen ser etiquetas HTML con parametros Name y/o ID, es decir cada etiqueta importante tiene su nombre y se puede ser referenciada en JavaScript. Esto veremos que nos va a aportar cierto problema al dar la respuesta desde el servidor, ya que tenemos que hacerlo utilizando el nombre de los ID utilizados al renderizar la página. Ahora solo queda disparar el evento que provoca la llamada AJaX, utilizando en evento onblur en los campos INPUT de nuestro form que provoquen AJaX.
¿ Que pasa en el servidor ? Básicamente, la respuesta a los comandos Ajax la podemos dar en el servercontroller o en el propio form que generó la página. Hacerlo en el servercontroller, puede ser util en respuestas 'automaticas' que no dependan del usuario o del form que creó la página. Por ejemplo operaciones simples, servicio de ficheros, ciertas validaciones. Hacerlo en el form, tiene la ventaja que se esta identificando la sesión adecuadamente y se puede interactuar con los objetos del form. Aunque aquí hay que hacer un aviso; Los cambios realizados en los controles del form, no se renderizan de forma normal, ya que no hay un 'refresco' completo de la página.
|
|
||||||||
|
Articulos en castellano: http://www.uberbin.net/archivos/internet/ajax-un-nuevo-acercamiento-a-aplicaciones-web.php http://adaptivepath.com/publications/essays/archives/000385.php En Ingles, http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro2/ http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro3/ http://blogs.phparch.com/mt/?p=51 Links http://blog.marcocantu.com/blog/ajax2.html http://weblogtoolscollection.com/archives/2005/03/21/some-ajax-links/ Plataformas Ajax http://bennolan.com/behaviour/ http://ajaxpatterns.org/Ajax_Frameworks Examples
|
||||||||||
|
||||||||||
|
|
||||||||||
|
Teléfono: 978-610539 - Fax: 978-610861 -Trav.Agustina Aragón 1,1e 44002 Teruel ( España ).webmaster Copyright © 1997-2007 , [Multi-Informatica Teruel, S.L]. |