Introduccion a JQuery+JSON: getJSON

Y el post anterior tenia una finalidad clara, introducirnos el concepto de JSON para que lo podamos emplear facilmente desde JQuery. JQuery es una libreria JavaScript que nos permite crear aplicaciones muy potentes de manera muy simple.

En JQuery existe una funcion llamada getJSON que simplifica las llamadas Ajax a un servidor. El formato de esta funcion es el que vemos en el siguiente enlace. Esta llamada lo que hace es enviar una peticion a una determinada URL y esperar a recibir una respuesta en formato JSON, cuando llega la respuesta entonces ejecuta una funcion de procesado de la respuesta.

Probemos el ejemplo de la pagina. Abre un editor de texto y copia el siguiente codigo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                    "<a class="external free" title="http://www.w3.org/TR/html4/loose.dtd" href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>">
<html>
<head>
  <script src="<a class="external free" title="http://code.jquery.com/jquery-latest.js" href="http://code.jquery.com/jquery-latest.js">http://code.jquery.com/jquery-latest.js</a>"></script>

  <script>
  $(document).ready(function(){
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
          });
        });
  });
  </script>
  <style>img{ height: 100px; float: left; }</style>
</head>
<body>
<div id="images"></div>
</body>
</html>

Cuando lo ejecutes, podras ver que se te muestran la imagen de 4 gatitos. (¿Y esto como es posible?). Vamos a verlo, diseccionando el codigo:

Lo primero que hacemos es importar la libreria de JQuery:

<script src="<a class="external free" title="http://code.jquery.com/jquery-latest.js" href="http://code.jquery.com/jquery-latest.js">http://code.jquery.com/jquery-latest.js</a>"></script>

Sin mayor misterio. esto es solo para poder usar JQuery.

La funcion que nos interesa es precisamente getJSON, que es de la forma:

 $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
codigo_a_ejecuta_cuando_llega_la_respuesta
}

Si te fijas, estamos enviando una peticion a la siguiente URL:

"http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?"

Que si la copiamos y pegamos en la URL de un navegador, esta devolviendo precisamente un string en formato JSON:

({
		"title": "Recent Uploads tagged cat",
		"link": "http://www.flickr.com/photos/tags/cat/",
		"description": "",
		"modified": "2008-09-06T22:41:00Z",
		"generator": "http://www.flickr.com/",
		"items": [
	   {
			"title": "Jungle-apartment cat",
			"link": "http://www.flickr.com/photos/28359008@N04/2833762651/",
			"media": {"m":"http://farm4.static.flickr.com/3075/2833762651_5a09bd3f11_m.jpg"},
			"date_taken": "2008-07-06T23:52:55-08:00",
			"description": "&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/28359008@N04/&quot;&gt;World Eggplant&lt;/a&gt; posted a photo:&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/28359008@N04/2833762651/&quot; title=&quot;Jungle-apartment cat&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3075/2833762651_5a09bd3f11_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Jungle-apartment cat&quot; /&gt;&lt;/a&gt;&lt;/p&gt; ",
			"published": "2008-09-06T22:41:00Z",
			"author": "nobody@flickr.com (World Eggplant)",
			"author_id": "28359008@N04",
			"tags": "cute cat ling katt"
	   },
	   {
			"title": "Let Me0owwwt",
			"link": "http://www.flickr.com/photos/sudsmuffincanada/2833750221/",
			"media": {"m":"http://farm4.static.flickr.com/3215/2833750221_0361858bb6_m.jpg"},
			"date_taken": "2008-09-05T18:41:14-08:00",
			"description": "&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/sudsmuffincanada/&quot;&gt;SudsMuffinCanada&lt;/a&gt; posted a photo:&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/sudsmuffincanada/2833750221/&quot; title=&quot;Let Me0owwwt&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3215/2833750221_0361858bb6_m.jpg&quot; width=&quot;180&quot; height=&quot;240&quot; alt=&quot;Let Me0owwwt&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Willow&lt;/p&gt;",
			"published": "2008-09-06T22:35:55Z",
			"author": "nobody@flickr.com (SudsMuffinCanada)",
			"author_id": "21274915@N04",
			"tags": "cat willow gato chatte"
	   },

Esto es precisamente porque estamos usando el API de Flick. Cuando ponemos una URL en este formato, a cambio recibimos una respuesta en formato de string JSON.

Y precisamente asi se comporta la funcion getJSON, cuando recibe la respuesta ejecuta el cuerpo de la funcion.
Esta era:

$.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
          });

O lo que es lo mismo:

.. Por cada data.items creame un tag donde el valor del atributo «SRC» es el valor del objeto JSON: item.media.m devuelto y eso me lo añades a un div con el id=»images».
Cuando el valor de i sea 3 te sales, es decir, me devuelves solo cuatro imagenes (empiezo en 0).
Asi que por eso, precisamente obtenemos cuatro imagenes de gatitos desde flick.

¿Simple, no?

Pues la idea es la misma, emplear JQuery en nuestros desarrollos. llamando a getJSON cuando queramos atacar a una URL nuestra que nos debera devolver un string en formato JSON y cuando recibimos ese string JSON le aplicamos la funcion que tengamos definida. Ajax 100%.

11 Respuestas to “Introduccion a JQuery+JSON: getJSON”


  1. 1 Iuga septiembre 7, 2008 a las 3:16 pm

    Excelente !!! gracias por estos micromanuales, ahora me dieron ganas de empezar a investigar el tema 😀

  2. 2 Cesar septiembre 8, 2008 a las 10:41 pm

    Hola Superpiwi, estoy entrando recién al mundo del java script.
    He probado el ejemplo que has puesto arriba pero no salen las 4 imágenes, solo un texto que dice:

    http: // http://www.w3.org/TR/html4/loose.dtd » >

    (he adiciona algunos espacios en blanco al mensaje)

    Si pudieras explicarme que paso?
    Gracias,
    César Gómez
    Lima -Perú

  3. 3 Cesar septiembre 8, 2008 a las 11:15 pm

    Ya me salio!!! 🙂
    Ahora a releer el código para entenderlo bien.

    Al parecer hay un problema al usar la opción «copy clipboard» no lo hizo bien. para solucionar el problema, solo copie el código original que esta en link que esta mas arriba (enlace).
    saludos,
    César Gómez
    Lima – Perú

  4. 4 Albert febrero 18, 2009 a las 10:50 pm

    Pero que pasa si el servidor se cae en una llamada, ¿como puedo ejecutar la función ERROR ?!!!

  5. 5 Carlos marzo 26, 2009 a las 10:03 pm

    Una Consulta existe la posiblida de q en lugar de poner una URL de una pagina se puede poner el Nombre de un PageMethod?
    En otras palabras se puede usar getJSON llamando a un PageMethod?

    Saludos

  6. 6 Martin febrero 11, 2011 a las 4:35 pm

    Excelente artículo, me resultó de gran ayuda !

    Saludos!

  7. 7 rvc julio 17, 2011 a las 8:18 pm

    Que diferencia hay entre esta función y el .ajax ?

  8. 9 José agosto 12, 2011 a las 6:51 am

    Woow interesantisimo viendo un vídeo tutorial vi como funciona la api de google maps y me gusto en verdad eso de la geolocalización pero yo voy por la funcion de conversion entre divisas que el buscador tiene integrado asi que a leer la documentacion del Google web search api


  1. 1 CODERS » BlogRoll III Trackback en abril 15, 2009 a las 6:26 pm
  2. 2 easter activities Trackback en septiembre 24, 2014 a las 4:47 pm

Deja un comentario







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

septiembre 2008
L M X J V S D
1234567
891011121314
15161718192021
22232425262728
2930  

Blog Stats

  • 31.401.550 hits