Tutorial de Ajax
AJAX no es un lenguaje exactamente su nombre viene dado por el acrónimo de Asynchronous JavaScript And XML y es posiblemente la mayor novedad en cuanto a programación web en estos últimos años.
1. Basado en los estándares abiertos
2. Usabilidad
3. Válido en cualquier plataforma y navegador
4. Beneficia las aplicaciones web
5. No es dificil su utilización
6. Compatible con Flash
7. Adoptado por los “gordos” de la tecnología web
8. Web 2.0
9. Es independiente del tipo de tecnología de servidor que se utilice
10. Mejora la estetica de la web
La manera más fácil para comprender realmente la funcionalidad de Ajax es ver cómo funciona una aplicación web con Ajax y cómo una sin Ajax.
Sin Ajax
Se crearía una página con un formulario, cuando el usuario envia los datos del formulario se produce una conexión a la base de datos y se muestra por pantalla la página que el servidor devuelve, todo esto hace que se recargue la página ya sea saltando a una diferente o a ella misma, el usuario debe esperar una nueva carga de página despues de cada envío.
Es lento porque debe descargar la información HTML por duplicado.
Con Ajax
Utilizariamos un código Javascript que que crearía el mencionado objeto XMLHttpRequest al enviar el formulario, esta llamada se produce de forma asincrona lo que significa que se envían los datos y no se recarga la página, una vez el servidor responde una función Javascript es la que valora la respuesta del servidor, si esta respuesta es la deseada imprimeremos el texto que indique al usuario que sus datos fueron enviados correctamente.
El navegador no recarga la página, la experiencia desde el punto de vista del usuario es muy satisfactoria puesto que se asemeja a la respuesta del típico software de escritorio, ya no te planteas enlazar páginas sino enviar y recibir datos en una misma página que mediante funciones evalua las diferentes respuestas.
Es bastante más rápido puesto que no tiene que descargar de nuevo el código HTML de la página de confirmación del formulario.
Ejemplo objeto XMLHttpRequest (AJAX)
En primer lugar crearemos nuestro objeto ActiveX en IExplorer y un objeto nativo en el resto de navegadores que lo soportan, y es por ello que tendremos que ver qué objeto creamos, controlandolo con diferentes condiciones, con esto conseguimos que el navegador cree una instancia del objeto apropiado, dependiendo del navegador usado por el usuario.
function nuevoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject(”Msxml2.XMLHTTP”);
} catch (e) {
try {
xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”);
} catch (E) {
xmlhttp = false;
}
}if (!xmlhttp && typeof XMLHttpRequest!=’undefined’) {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
Una vez hayamos comprendido y realizado este paso tendremos que tener en cuenta los métodos y propiedades que nos ofrece AJAX:
Métodos
abort() - Detiene la petición en curso.
getAllResponseHeaders() - Devuelve todas las cabeceras de la respuesta (etiquetas y valores) como una cadena.
getResponseHeader(etiqueta) - Devuelve el valor de la etiqueta en las cabecerasde la respuesta.
open(método,URL,asíncrona,nombre,password) - Abre una conexión con esa URL mediante ese metodo (GET o POST), aplicando los valores opcionales de la derecha (ahora se explicará).
send(contenido) - Envía el contenido al servidor.
setRequestHeader(etiqueta,valor) - Establece el valor de una etiqueta de las cabeceras de petición.
De está lista nos detendremos en el método open que es uno de los más utilizados y el que nos permitirá utilizar la mejor característica de Ajax que es la carga de datos externos a la página sin necesidad de recargar la misma.
Método Open
El método open prepara una conexión HTTP a través del objeto XMLHttpRequest con un método y una URL especificados.
XMLHttpRequest.open ( sMetodo, sURL [, bSincronia [, sUsuario [, sPwd ] ] ] );
sMetodo es la cadena que nos indicara el tipo de conexión (GET o POST)
sURL es la url a la que realizamos la petición
bSincronia es un campo booleano con el que podemos utilizar modo asíncrono o síncrono, si lo fijamos en “false” modo síncrono perderiamos las mejores características de AJAX, los datos sUsuario y sPwd son opcionales y sólo aplicables en caso de caída del servidor.
Al llamar a open el atributo readyState a 1, resetea los headers de envío y los devuelve atributos responseText, responseXML, status y statusText a sus valores iniciales
Propiedades
onreadystatechange - Contiene el nombre de la función que se ejecuta cada vez que el estado de la conexión cambie.
readyState - Estado de la conexión, puede valer desde 0 (no iniciada) hasta 4 (completado).
responseText - Datos devueltos por el servidor en formato cadena.
responseXML - Datos devueltos por el servidor en forma de documento XML que puede ser recorrido mediante las funciones del DOM (getEementsByTagName, etc).
status - Código enviado por el servidor, del tipo 404 (documento no encotrado) o 200 (OK).
statusText - Mensaje de texto enviado por el servidor junto al código (status), para el caso de código 200 contendrá “OK”.
Conocer estas propiedades y métodos es algo muy útil a la hora de desarrollar aplicaciones utilizando Ajax debido a la gran ayuda que muchas de ellas ofrecen a la hora de depurar errores. Y nos da una mayor idea acerca de la potencia de esta conjunción de tecnologías.
Ejemplo de envío de datos “GET”
function cargarContenido(){
var t1, t2, contenedor;
contenedor = document.getElementById(’contenedor’);
t1 = document.getElementById(’texto1′).value;
t2 = document.getElementById(’texto2′).value;
ajax=nuevoAjax();
ajax.open(”GET”, “ejemploajax2.php?t1=”+t1+”&t2=”+t2,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.send(null)
}
Ejemplo de envío de datos “POST”
Unicamente debemos cambiar algunas cosas en nuestra función:
Adicción de una línea adicional: setRequestHeader que especifica qué tipo de datos llegarán al servidor. Cambio del parametro que especifica el método a “POST” y por último utilizaremos parametros para el “send”.
function cargarContenido(){
var t1, t2, contenedor;
contenedor = document.getElementById(’contenedor’);
t1 = document.getElementById(’texto1′).value;
t2 = document.getElementById(’texto2′).value;
ajax=nuevoAjax();
ajax.open(”POST”, “ejemploajax2.php”,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader(”Content-Type”, “application/x-www-form-urlencoded”);
ajax.send(”t1=”+t1+”&t2=”+t2)
}
Diferencia entre el método GET y POST
Es aconsejable elegir “GET” para aquellas peticiones en las que se soliciten pocos datos y “POST” para aquellas en las que sea necesario enviar información, especialmente si estos datos podrían superar los 512 bytes en total, puesto que por el método “GET” no podremos recibir la totalidad de los datos.
Conclusión
La evolución de AJAX ha sido un hecho que ha marcado la tendencia en los lenguajes de programación en estos últimos años, puedes obtener más información sobre tendencias de lenguajes de programación en esta gráfica.
Espero que el tutorial haya servido de ayuda no dudeis en visitar el foro si teneis alguna duda.
Para los usuarios más avanzados recomiendo el uso de la librería Prototype.
Leer entradas relacionadas:
Registrar feed
Leer mas
Comentarios Recientes
- Old Pic Pussy: Lip Old Puss...
- La prima: Mira q nunca me dio por mirar a menudo tu pagina,...
- Neil Hepburn: Listeners visiting TUN3R.com will now be able to ...
- Guías de viaje: Me gustaría saber si alguien tiene la versión 2...
- sandra: pero como vivis!!!!!! , que envidia , disfrutad ...
- job: know is the best tim...
- riki: Hola felix!!! Esos masajes tan baratos, ... ¿er...
- La prima: No les podeis dar chocolate o golosinas a los nin...
- mario: Ni de luna de miel dejas el blog!!! :-D desconect...
- La prima: Jeje, este tb aparecio en la pagina de juansi.com...
Nube de Tags
+ 2.5 2008 8085 ace adiccion ads adsense ADSL analisis patrocinado apuestas arte ascii asesinada azureus backlinks balanceo bali bangkok barcelona bkk blog bolsa buscador buscadores cagada calleja camara cancion carga carteles celebre chikichiki ciega codificadores conferencia congreso cuatro cumpleaños Curiosidades debate dedicados deportivas desafio digg digital dormir dvd ejemplo elecciones elecciones 2008 electoral emule error estadisticas etiquetas eurovision fea felicidades felicitacion felicitar Firefox firma flickr flores flv flv2mp3 foto fotos frase freak Friki futuro geek Google gps gratis gxmax hablar hermano hicisteis hosting hotsport Humor id3 indonesia internet jardi Jesus juego keys laser linux losviajeros luz madrid maps marcadores metabuscador metadatos Microsoft mobile mod_rewrite montaña movil mp3 mplayer mvision mysql n50 n70 n95 navegador nelly2pcm niña night nokia nube oficinas omv online open operador ordenador paddy panoramica patrocinado PDA pelea phi phi pirtateria pizza plugin plus politicos porque portatil posicionamiento post postal postear power pp preguntas programacion proxy prueba psoe publicidad rajoy rarezas reflexiones rewrite rosa SEO servideores skype star symbian tag tags tailandia telefonia telefono television thailand thailandia tomate tomtom torrent torre picaso tortazo total tu.tv ubuntu version viaje viaje novios Viajes video videos virtual vodafone voip voipbuster vuelos wars wav web WiFi wireless word congress Wordpress ya.com yahoo youtube zapatero-
9 September 2006
Cuando coincidimos en Erandio leí algo sobre AJAX (ya sabes que nos sobraba algo de tiempo cada día, jaja) y me pareció muy interesante, aunque luego he andado desconectado de la informática… seguro que ya hay herramientas que automatizan todo ese código, seguro que desde el RAD de IBM se puede hacer algo de esto con 3 GB de RAM, jaja, ¿que no?
Muy interesante tu artículo si necesito algo de esto en mi próximo curro ya volveré a leerlo con calma, saludos
-
9 September 2006
Realmente el tema Ajax es muy interesante, las opciones que da y sobre todo la usabilidad que dan a la web cara al usuario final son asombrosas. Que se te actualice un dato sin que se te tenga que recargar la pagina entera, abre un nuevo concepto de diseño de web.
Yo intente meter un par de cosas de Ajax en uno de los proyectos de mi actual empresa, pero el tema de que sea JavaScript lo hecha para atras por tema WAI.
Ya veremos a ver
Post a Comment »
Comment Guidelines
- Hyperlinks are automatically generated.
- <em>italic</em>
- <strong>bold</strong>
Sobre el blog
Recientes
- 05.08 Estamos en Bali
- 05.05 Adios a Chiang Mai
- 04.28 empezando el viaje de novios
- 04.24 Me caso
- 04.19 Inventos y esperimentos caseros
- 04.19 La importancia de tener un buen servidor
- 04.15 Nueva web para información sobre gps
- 04.15 Estancia en bali
- 04.14 Carteles con mala leche
- 04.09 Oficinas de google en suiza
Categorias
- Acciones (2)
- acertijos (1)
- ads (10)
- ADSL (17)
- Aplicacion Blog (19)
- Bici (4)
- Blogsfera (14)
- buceo (1)
- buscadores (2)
- CABLE (7)
- Caza (7)
- Cosas de internet (31)
- Criticas Gastronomicas (7)
- CRM (1)
- Curiosidades (48)
- Cursos (5)
- estadisticas (4)
- Euskaltel (16)
- Firefox (6)
- FON (5)
- frases (2)
- Friki (9)
- geek (13)
- General (88)
- Google (55)
- google developer day (2)
- hosting (13)
- Humor (15)
- iconos (1)
- linux (9)
- mac (1)
- Misterio (5)
- Monte (2)
- movil (14)
- Mundo Blogger (5)
- Mundo rosa (1)
- mvision (5)
- mysql (2)
- n95 (1)
- P2P (10)
- patrocinados (6)
- PDA (1)
- plugins (4)
- programacion (5)
- publicidad (13)
- Quejas (13)
- redes (6)
- reflexiones (1)
- SEO (9)
- Series (3)
- Tecnologia (50)
- Television online (4)
- tu.tv (19)
- Tutoriales (15)
- ubuntu (2)
- Viajes (31)
- web 2.0 (23)
- WiFi (11)
- Windows (2)
- Wordpress (15)
- yahoo (4)
2 Comments
Jump to comment form | comments rss [?] | trackback uri [?]