BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog
Sitio certificado por
Adoos
ingyenes hirdetés
petites annonces gratuites
Buscador de blog
Neurona Rabiosa | Rompecabezas, Acertijos, Enigmas
Floggers vs Emos | Danos tu opinion al respecto

Tutorial: Ajax con Prototype.js

Fecha Julio 1st, 2008  Categoria Ajax, Prototype.js, Tutoriales

Que empiece con esto no quiere decir que doy por terminada la encuesta, si no que para no dejar de postear, voy tirando de lo mas votado (y por el momento es Ajax).

Bueno, volviendo al post... Ajax, la tecnologia de la web 2.0, o eso es lo que dicen; pero la verdad es que la mayoria de los sitios categorizados como 2.0, implementan mucho el Ajax, para incluir archivos, para hacer elementos "draggeables", etc.

Pasemos a lo importante: Prototype.js. No se si la mayoria lo conoce, pero es (para mi y muchos de mis conocidos) el mejor framework/libreria javascript hasta el momento, y es apartir de esto, que yo desarrollo en ajax, ya que prototype te brinda bastantes funciones y metodos que nos permiten un facil manejo de javacript/ajax.

Entonces, lo que veremos en este tutorial, son varias funciones de Prototype que estoy seguro que a mas de uno le sera util a la hora de incursionar en el mundo de la web 2.0.

1 - Funcion $():

Esta funcion es mas una abreviatura a la clasica llamada document.getElementById, para un uso simple, su unico parametro sera una string con el id de un objeto de la pagina, por ejemplo:

HTML:
  1. <div id="mydiv">Hello World!</div>
  2. <script type="text/javascript">
  3. alert($('mydiv').innerHTML);
  4. </script>

El resultado seria un mensaje de alerta con el texto "Hello World!". Pero esta funcion no termina ahi, si no que podes conseguir un array con objetos de la pagina, todo esto pasandole como parametros, strings con los id de varios elementos de la pagina, por ejemplo:

HTML:
  1. <div id="obj1">one</div>
  2. <div id="obj2">two</div>
  3. <div id="obj3">chau</div>
  4. <script type="text/javascript">
  5. var arr= $('obj1','obj2','obj3');
  6. </script>

La variable "arr" se convierte en un array donde cada uno de sus elementos, es un objeto html.
Creo que con esto, podemos dar por terminada la definicion de este metodo, pasemos a lo siguiente.

2 - Pequeña definicion del objeto Ajax de prototype.

Asi como leen, Prototype trae consigo un objeto del cual podemos sacar todas las funciones para trabajar con ajax. Estas funciones son 'Request', 'Updater' y 'PeriodicalUpdater', y ahora las vemos:

3 - Ajax.Request:

Este metodo es el mas normal y el mas usado, ya que solo hace una llamada al servidor y recuera los datos que este le devuelva, y de ahi, haz con los datos lo que tu quieras(es el metodo que uso para el AjaxForm).
Como parametros, tenemos: la url del archivo que pedira los datos al server, puede ser un php, asp, etc; luego, el resto de los paramentros van dentro de corchetes y en formato "nombre_de_parametro: valor," y separados por coma (para los quieran saber por que, busquen info sobre JSON, o esperen a que postee el tuto); volviendo al tema, los parametros son: method, cuyo valor puede ser 'post' o 'get' (en fomato string); parameters, que seran los parametros que queremos mandar, y que luego, dependiendo del metodo que usamos para mandarlos(post/get) sera como lo recibamos(el formato sera de tipo cadena de get, por ejemplo: "valor1=algo&valor2=otracosa").
Luego tenemos las funciones de respuesta, las cuales ejecutaremos en los eventos de nuestro objeto, y son:onUninitialized, onLoading, onLoaded, onInteractive, onCompleted, onException, onSuccess y onFailure. En este tutorial, solo utilizaremos las utlimas dos. Las funciones de respuesta de las que hablo, son declaradas por nosotros y se lanzan cuando se ejecuta el evento.

Ejemplo:

JavaScript:
  1. var okFunc = function(t){
  2. alert('El archivo devolvio: ' + t.responseText);
  3. }
  4.  
  5. var errFunc = function(t){
  6. alert('Error: ' + t.status + ' -- ' + t.statusText);
  7. }
  8.  
  9. new Ajax.Request('respuesta.php', {
  10. method: 'post',
  11. parameters:'parametro1=algo&amp;parametro2=otracosa',
  12. onSuccess:okFunc,
  13. onFailure:errFunc
  14. });

NOTA: en caso de que quieras hacer algo como:

JavaScript:
  1. var okFunc = function(t){
  2. $('mi_div').innerHTML=t.responseText;
  3. }

Te recomiendo que utilices el metodo "evalScripts" sobre el responseText, por que en caso de que no lo hagas, si tu respuesta trae codigo javascript, este no se ejecutara mediante Ajax, la forma correcta seria (como en mi AjaxForm):

JavaScript:
  1. var okFunc = function(t){
  2. $('mi_div').innerHTML=t.responseText;
  3. t.responseText.evalScripts();
  4. }

4 - Ajax.Updater:

Una vez explicado el metodo anterior, este y el que sigue van a ser muy faciles de comprender. Con el Updater hacemos una llamada al servidor y mostramos los datos retornados en un contenedor html. Veamos un ejemplo:

JavaScript:
  1. new Ajax.Updater('mi_div','respuesta.php', {
  2. method: 'post',
  3. parameters:'parametro1=algo&amp;parametro2=otracosa'
  4. });

Y listo, asi de sencillo: llamamos al archivo y este solo se incluye en el div. Nota: YO prefiero hacer estos movimientos con el Request, es como que tenes mas control sobre lo que estas moviendo. Tambien son aplicables las funciones de respuesta.

5 - Ajax.PeriodicalUpdater:

Ya deben suponer como funciona no? :P, bueno, este metodo ejecuta una Updater cada cierto tiempo, y maneja casi los mismo parametros que el Updater: id de un elemento y la url a la que pide los datos; PERO dentro de las llaves (dento del JSON) debemos incluir dos parametros mas: "frequency" que es la frecuencia con la que se repite la llamada y "decay"(opcional), que es el aumento que se le dara a frequency en caso de que el archivo de respuesta no devuelva nada.

Ejemplo:

JavaScript:
  1. new Ajax.PeriodicalUpdater('mi_div','respuesta.php', {
  2. frequency: '3',
  3. decay: '1',
  4. method: 'post',
  5. parameters:'parametro1=algo&amp;parametro2=otracosa'
  6. });

Esas serian las 3 funciones basicas que manejan el Ajax dentro de Prototype, espero que les sirva, y si no entendieron algo, no duden en comentar, asi me encargo de explicarlo o corregirlo :P

Saludos

7 Comentarios to
“Tutorial: Ajax con Prototype.js”

Mario Dijo:

Hola, muy buen articulo, ha mucha gente le vendra muy bien,
de hecho yo comencé a investigar con prototype gracias a ti y la verdad es que funciona muy bien : ).

Pero te quería comentar un detalle:

- ‘Ajax, para incluir archivos, para hacer elementos “draggeables”, etc.

Bajo mi opinión no incluiría el “drag & drop” dentro de las funcionalidades de AJAX, por ejemplo, tenemos varias capas y podemos moverlas y cambiarlas de lugar, eso seria “drag & drop” y no usaría nada mas que javascript, sin ninguna petición extra al servidor, otro ejemplo seria el de una tienda web en el cual se muestran los productos en imágenes y puedes cogerlos y ponerlos en el carrito y se suma, el “drag & drop” seguiría sin utilizar AJAX, aunque no podemos decir lo mismo de la función que suma dicho producto al carrito.

Esta es simplemente mi opinión y espero una respuesta por que tal vez lo estemos mirando de formas distintas.

Saludos.

Homer0 Dijo:

Primero que nada, gracias por el comment, he hiciste bien en empezar con prototype :), ahora, ya se que el drag&drop no involucra Ajax, pero junto a muchas otras cosas (como fade y ventanas flotantes) han sido asociadas con esta tecnologia debido a la ideologia de la web 2.0, yo los nombro para aquellos que recien estan arrancando en el tema, pero no te preocupes, no estoy escribiendo notas que voy sacando de internet (bueno, base este tutorial en un par de notas mias que tenia de un curso), se lo que es ajax y que solamente involucra una llamada asincronica al servidor( y si, se lo que es asincronica :P jeje).

Bueno, suerte con prototype y cualquier cosa, si te surge una duda, mandame un mail, no soy el MAESTRO de prototype, pero me las llevo bastante bien.

Saludos

Mario Dijo:

Hola Homer0, la verdad es que se suele atribuir a AJAX y luego la gente se cree que AJAX es un “motor mágico” que hace todo por nosotros jeje.

Saludos.

Homer0 Dijo:

Jaja, tenes toda la razon, asi empece yo con el tema, creia que ajax era todo un motor cosmico que valia la pena aprender para manejar toda clase de efectos locos, luego descubri que la cosa no era asi, y encontre la diferencia entre ajax y javascript jugando con el DOM..

Saludos chabon

Maxi Dijo:

Hola Homero.. recien hoy pude leer el tuto, me parecio muy interesante y me ayudo a empezar a comprender ajax :d jej.. ahora me voy a poner a estudiar mas.

Saludos!

W4 Dijo:

Hi Buena Info Bro, pero una sola recomendacion , cuando entregues la informacion intenta ocupar tablas o esquemas para poder definir por ej los parametros, porque en “linea continua” no se entiende muy bien. nada mas esop.

Saludos¡

Homer0 Dijo:

Si, disculpa loco, ahi fue cuando tenia menos tiempo para postear (lo hago desde el laburo), ahora ya directamente me es imposible, pero algo voy a hacer :P

Salu2 y grax por el comment

Decime que opinas

Segun Twitter...
Twitter Veamos si esto funciona : http://tinyurl.com/rdhwp

Subscribite al Feed
RSS Feed Agregar a del.icio.us Agregar a Technorati Agregar a StumbleUpon Agregar a Digg
Geek Readers
Control del Blog

Ultimos Posts

Post Blog2iPhone.co... Post 10 Imagenes mo... Post Forma correcta... Post Humor: Lo que ... Post Justifico mi r... Post Humor para pro... Post Mi bloqueo a I... Post Clase PHP para... Post Jaxer RC 1.0 Post Que opinan sob...
Cronologia

2008 2007
Colabora con mis proyectos
1 Centavo hace la
diferencia
Proyectos

Proximamente!

Powered by
PHP xHTML Get Firefox
MySQL CSS Wordpress

Esta obra está licenciada bajo una
Licencia Creative Commons
Atribución-No Comercial 2.5 Argentina
Blog potenciado por
Wordpress & nBlak Studios

RSS | Legal | Contactar