<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>aNieto2K &#187; ajax</title>
	<atom:link href="http://www.anieto2k.com/category/programacion/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anieto2k.com</link>
	<description>Desarrollo web, Wordpress, y alguna cosilla más</description>
	<lastBuildDate>Sun, 12 Feb 2012 10:15:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Un vistazo al futuro: IE9 Developer Tools, la pestaña de red</title>
		<link>http://www.anieto2k.com/2010/04/23/un-vistazo-al-futuro-ie9-developer-tools-la-pestana-de-red/</link>
		<comments>http://www.anieto2k.com/2010/04/23/un-vistazo-al-futuro-ie9-developer-tools-la-pestana-de-red/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 20:30:25 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[estandares]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[developer.tools]]></category>
		<category><![CDATA[IE9]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9868</guid>
		<description><![CDATA[Internet Explorer 9 está a la vuelta de la esquina, y su llegada defraudará a muchos por la escasa adopción de estándares y animará a otros con nuevas funcionalidades y herramientas que nos permitirán desarrollar para él con más comodidad. Una de estas herramientas es la ya conocida Developer Tools para Internet Explorer, que en [...]]]></description>
			<content:encoded><![CDATA[<a href="http://www.anieto2k.com/2010/01/19/%C2%BFtendra-internet-explorer-9-soporte-svg/">Internet Explorer 9 está a la vuelta de la esquina</a>, y su llegada defraudará a muchos por la escasa adopción de estándares y animará a otros con nuevas funcionalidades y<a href="http://www.anieto2k.com/2008/03/06/developer-toolbar-para-internet-explorer-8/"> herramientas que nos permitirán desarrollar para él </a>con más comodidad.

Una de estas herramientas es la ya conocida <a href="http://www.anieto2k.com/2008/03/06/developer-toolbar-para-internet-explorer-8/">Developer Tools para Internet Explorer</a>, que en esta nueva versión para <a href="http://blogs.msdn.com/ie/archive/2010/04/22/ie9-developer-tools-network-tab.aspx">Internet Explorer 9 dispondrá de una pestaña de red</a> que nos mostrará información relacionada a las conexiones realizadas en nuestra aplicación web.
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_3.png"><img src="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_3.png" alt="NetworkTab_3" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_3.png"><small>(Ver Imagen)</small></a></p>
La posibilidad de capturar las peticiones entrantes y salientes de nuestras aplicaciones web (imágenes, CSS, Ajax,...) pudiendo ver detalles interesantes sobre cada petición.
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_5.png"><img src="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_5.png" alt="NetworkTab_5" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2010/04/NetworkTab_5.png"><small>(Ver Imagen)</small></a></p>
Osea, básicamente lo mismo que hacemos con<a href="http://www.anieto2k.com/2008/03/06/developer-toolbar-para-internet-explorer-8/"> Firebug, Web Inspector, Dragonfly en su respectivo navegador</a>.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/06/29/links-para-hacernos-la-vida-mas-facil/" rel="bookmark" title="Permanent Link: Links para hacernos la vida más facil.">Links para hacernos la vida más facil.</a></li><li><a href="http://www.anieto2k.com/2006/09/30/crea-estructuras-de-forma-semantica/" rel="bookmark" title="Permanent Link: Crea estructuras de forma semántica">Crea estructuras de forma semántica</a></li><li><a href="http://www.anieto2k.com/2007/03/12/javascript-developer-tools/" rel="bookmark" title="Permanent Link: Javascript Developer Tools">Javascript Developer Tools</a></li><li><a href="http://www.anieto2k.com/2009/06/05/jquery-tools-herramientas-para-usar-con-tu-jquery/" rel="bookmark" title="Permanent Link: jQuery Tools, herramientas para usar con tu jQuery">jQuery Tools, herramientas para usar con tu jQuery</a></li><li><a href="http://www.anieto2k.com/2008/11/19/herramientas-para-ayudarnos-con-el-dia-a-dia/" rel="bookmark" title="Permanent Link: Herramientas para ayudarnos con el día a día">Herramientas para ayudarnos con el día a día</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2010/04/23/un-vistazo-al-futuro-ie9-developer-tools-la-pestana-de-red/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>15 plugins jQuery para la manipulación de tablas</title>
		<link>http://www.anieto2k.com/2009/09/07/15-plugins-jquery-para-la-manipulacion-de-tablas/</link>
		<comments>http://www.anieto2k.com/2009/09/07/15-plugins-jquery-para-la-manipulacion-de-tablas/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 10:11:19 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[jquery.plugin]]></category>
		<category><![CDATA[tablas]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8846</guid>
		<description><![CDATA[Los elementos &#60;table /&#62;, poco a poco, se están usando para lo que fueron creados, como la mejor forma de mostrar datos tabulados al usuario. Gracias a este uso, es posible usar javascript para añadirle funcionalidad a esas estáticas tablas. (Ver Imagen) Entre estos 15 plugins jQuery, seguro que encuentras algo para hacer que tus [...]]]></description>
			<content:encoded><![CDATA[Los elementos <code>&lt;table /&gt;</code>, poco a poco, se están usando para lo que fueron creados, como la mejor forma de mostrar datos tabulados al usuario. Gracias a este uso, es posible usar javascript para añadirle funcionalidad a esas estáticas tablas.
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/09/tablas-dinamicas-jquery.jpg"><img src="http://www.anieto2k.com/wp-content/uploads/2009/09/tablas-dinamicas-jquery-600x286.jpg" alt="tablas-dinamicas-jquery" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2009/09/tablas-dinamicas-jquery.jpg"><small>(Ver Imagen)</small></a>

Entre <a href="http://www.webdesignbooth.com/15-great-jquery-plugins-for-better-table-manipulation/">estos 15 plugins jQuery</a>, seguro que encuentras algo para hacer que tus tablas de datos no sean planas y sin opciones.
<h3><a title="DataTables" href="http://www.datatables.net/">DataTables</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Edición al vuelo</li>
	<li>Carga de datos con Ajax</li>
	<li>Paginación</li>
	<li>Multiordenación por columnas</li>
	<li>Extensible por plugins</li>
	<li>Personalizable por CSS</li>
	<li>Idiomatizable</li>
</ul>
<h3><a title="uiTableFilter" href="http://gregweber.info/projects/uitablefilter">uiTableFilter</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Filtrar datos al vuelo</li>
</ul>
<h3><a title="Scrollable HTML table plugin for jQuery" href="http://www.webtoolkit.info/scrollable-html-table-plugin-for-jquery.html">Scrollable HTML Table</a></h3>
<span id="more-1754"> </span>
<h4>Permite:</h4>
<ul>
	<li>Usar la estructura HTML</li>
	<li>Limitar el alto y ancho de la tabla</li>
</ul>
<h3><a title="Tablesorter" href="http://tablesorter.com/docs/">Tablesorter</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Multiordenación por columnas</li>
	<li>Extensible mediante widgets</li>
</ul>
<h3><a title="Flexigrid - Web 2.0 Javascript Grid for jQuery" href="http://flexigrid.info/">Flexigrid</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Re-dimensionar las columnas</li>
	<li>Re-dimensionar la tabla</li>
	<li>Ordenación por columnas</li>
	<li>Carga de datos mediante Ajax</li>
	<li>Paginación</li>
	<li>Mostrar u Ocultar columnas</li>
	<li>Toolbar inferior con opciones</li>
	<li>Busqueda de datos</li>
	<li>API accesible</li>
</ul>
<h3><a title="HeatColor" href="http://www.jnathanson.com/blog/client/jquery/heatcolor/index.cfm">HeatColor</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Establecer rango de colores para visualizar más fácilmente resultados.</li>
</ul>
<h3><a title="JQTreeTable" href="http://www.hanpau.com/index.php?page=jqtreetable">JQTreeTable</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Mostrar datos en forma de arbol dentro de tu tabla.</li>
</ul>
<h3><a title="Ingrid" href="http://reconstrukt.com/ingrid/">Ingrid</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Re-dimensionar columnas</li>
	<li>Paginación</li>
	<li>Ordenación por columna o fila</li>
	<li>Personalización mediante CSS</li>
</ul>
<h3><a title="jQuery ColumnManager plugin" href="http://p.sohei.org/jquery-plugins/columnmanager/">jQuery ColumnManager plugin</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Mostrar u ocultar columnas.</li>
</ul>
<h3><a title="jQuery treeTable" href="http://blog.cubicphuse.nl/2008/11/12/jquery-treetable-2-0"> jQuery treeTable</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Mostrar datos en forma de árbol.</li>
</ul>
<h3><a title="CSV2Table" href="http://plugins.jquery.com/project/csv2table">CSV2Table</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Cargar datos de un fichero CSV</li>
</ul>
<h3><a title="Table Pagination" href="http://neoalchemy.org/tablePagination.html">Table Pagination</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Paginación</li>
</ul>
<h3><a title="jQuery TableRowCheckboxToggle" href="http://pure-essence.net/stuff/webTips/jqueryTableRowCheckboxToggle.html">jQuery TableRowCheckboxToggle</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Cambiar la <code>class</code> de la fila mediante checkboxes (para remarcarlas)</li>
</ul>
<h3><a title="Table Drag and Drop jQuery plugin" href="http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/">Table Drag and Drop jQuery plugin</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Hacer Drag and Drop en filas reordenandolas.</li>
</ul>
<h3><a title="uiTableEdit" href="http://gregweber.info/projects/uitableedit">uiTableEdit</a></h3>
<h4>Permite:</h4>
<ul>
	<li>Permite editar la tabla por el usuario</li>
</ul></p><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/08/01/ordena-tablas-con-jquery/" rel="bookmark" title="Permanent Link: Ordena tablas con JQuery">Ordena tablas con JQuery</a></li><li><a href="http://www.anieto2k.com/2008/04/10/los-37-mejores-plugins-para-jquery/" rel="bookmark" title="Permanent Link: Los 37 mejores plugins para jQuery">Los 37 mejores plugins para jQuery</a></li><li><a href="http://www.anieto2k.com/2008/12/11/excelentes-plugins-para-jquery/" rel="bookmark" title="Permanent Link: Excelentes plugins para jQuery">Excelentes plugins para jQuery</a></li><li><a href="http://www.anieto2k.com/2009/04/24/minimalist-jquery-11-plugins-de-jquery-que-no-superan-los-4kb-de-peso/" rel="bookmark" title="Permanent Link: Minimalist jQuery: 11 plugins de jQuery que no superan los 4kb de peso">Minimalist jQuery: 11 plugins de jQuery que no superan los 4kb de peso</a></li><li><a href="http://www.anieto2k.com/2007/09/17/jquery-ui-jugando-con-el-framework/" rel="bookmark" title="Permanent Link: jQuery UI, jugando con el framework">jQuery UI, jugando con el framework</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/09/07/15-plugins-jquery-para-la-manipulacion-de-tablas/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Carga contenido mediante scroll con jQuery</title>
		<link>http://www.anieto2k.com/2009/07/23/carga-contenido-mediante-scroll-con-jquery/</link>
		<comments>http://www.anieto2k.com/2009/07/23/carga-contenido-mediante-scroll-con-jquery/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 05:35:03 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8683</guid>
		<description><![CDATA[Luis Sacristan de SentidoWeb publica un interesante link sobre como conseguir cargar contenido usando scroll con jQuery. Esta técnica, la podemos encontrar en sitios con DZone, y es ideal para sustituir la paginación tradicional. $(document).ready(function(){ // Añadimos la funcionalidad al evento scroll de window $(window).scroll(function(){ // Comprobamos si estamos en la parte inferior de la [...]]]></description>
			<content:encoded><![CDATA[<a href="http://sentidoweb.com/2009/07/22/cargar-contenido-con-el-scroll-mediante-jquery.php">Luis Sacristan de SentidoWeb</a> publica un interesante link sobre como conseguir <a href="http://9lessons.blogspot.com/2009/07/load-data-while-scroll-with-jquery-php.html">cargar contenido usando scroll con jQuery</a>. Esta técnica, la podemos encontrar en sitios con <a href="http://www.dzone.com/links/index.html">DZone</a>, y es ideal para sustituir la paginación tradicional.
<pre>$(document).ready(function(){
<strong> // Añadimos la funcionalidad al evento scroll de window
</strong> $(window).scroll(function(){
<strong> // Comprobamos si estamos en la parte inferior de la página.
</strong> if ($(window).scrollTop() == $(document).height() - $(window).height()){
<strong> // Mostramos la imagen de cargando
</strong> $('div#last_msg_loader').html('&lt;img src="bigLoader.gif"&gt;');
<strong> // Cargamos el contenido.
</strong> var ID=$(".message_box:last").attr("id");
 $.post("load_data.php?action=get&amp;last_msg_id="+ID,
 }
 });
 });
});</pre>
Como vemos en el código, la idea es usar el evento <code>scroll </code>del objeto <code>Window </code>para iniciar una carga mediante Ajax de los datos siguientes a los que mostramos por pantalla.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2008/10/10/scrollable-haz-facil-el-scroll-con-jquery/" rel="bookmark" title="Permanent Link: Scrollable, haz fácil el scroll con jQuery">Scrollable, haz fácil el scroll con jQuery</a></li><li><a href="http://www.anieto2k.com/2008/04/08/easy-scroll-scroll-accesible-para-tu-contenido/" rel="bookmark" title="Permanent Link: Easy Scroll, Scroll accesible para tu contenido">Easy Scroll, Scroll accesible para tu contenido</a></li><li><a href="http://www.anieto2k.com/2008/11/04/scrollable-list-listados-con-scroll-en-jquery/" rel="bookmark" title="Permanent Link: Scrollable List, listados con scroll en jQuery">Scrollable List, listados con scroll en jQuery</a></li><li><a href="http://www.anieto2k.com/2009/05/28/scrollspy-plugin-de-mootools-para-gestionar-el-scroll-de-los-usuarios/" rel="bookmark" title="Permanent Link: ScrollSpy, plugin de MooTools para gestionar el scroll de los usuarios">ScrollSpy, plugin de MooTools para gestionar el scroll de los usuarios</a></li><li><a href="http://www.anieto2k.com/2008/08/17/ocultar-la-barra-de-navegacion-en-mobile-safari/" rel="bookmark" title="Permanent Link: Ocultar la barra de navegación en Mobile Safari">Ocultar la barra de navegación en Mobile Safari</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/07/23/carga-contenido-mediante-scroll-con-jquery/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Todo lo que siempre quisiste saber sobre JSON</title>
		<link>http://www.anieto2k.com/2009/07/06/todo-lo-que-siempre-quisiste-saber-sobre-json/</link>
		<comments>http://www.anieto2k.com/2009/07/06/todo-lo-que-siempre-quisiste-saber-sobre-json/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:05:43 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[estandares]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8594</guid>
		<description><![CDATA[JSON es la abreviatura de Javascript Objecto Notation y se trata de una forma de almacenar información de forma organizada y de fácil acceso. var aNieto2k = { "edad" : "28", "ciudad" : "Palma de Mallorca, ES", "genero" : "hombre" }; A simple vista se obtiene una estructura muy clara y que ayuda a su [...]]]></description>
			<content:encoded><![CDATA[JSON es la abreviatura de <strong>Javascript Objecto Notation</strong> y se trata de <a href="http://ennuidesign.com/blog/JSON:+What+It+Is,+How+It+Works,+and+How+to+Use+It/">una forma de almacenar información</a> de forma organizada y de fácil acceso.
<pre><code>var aNieto2k = {
    "edad" : "28",
    "ciudad" : "Palma de Mallorca, ES",
    "genero" : "hombre"
};</code></pre>
A simple vista se obtiene una estructura muy clara y que ayuda a su comprensión. En este ejemplo hemos definido un pequeño objeto JSON llamado <code>aNieto2k </code>compuesto de una serie de atributos. De esta forma, podemos usarlos posteriomente siguiendo la siguiente estructura.
<pre><code>alert("aNieto2k tiene " + aNieto2k.edad + " años");</code></pre>
<h3>Funciones (no para transportar información)</h3>
Gracias a la versatilidad de las variables en Javascript nos es posible igualar uno de estos atributos a una función, generando así un método propio del objeto:
<pre><code>var aNieto2k = {
    "edad" : "28",
    "ciudad" : "Palma de Mallorca, ES",
    "genero" : "hombre",
    <strong>"saludar" : function(aquien) {
    	alert("Hola, soy aNieto2k de " + this.ciudad + ", ¿Como estás " + aquien + "?");
    },</strong>
};</code></pre>
Ahora ya puedo <code>saludar()</code> :D
<pre><code>aNieto2k.saludar("Usuario");</code></pre>
Al formar parte del objeto JSON, podemos hacer uso de los atributos desde el propio método mediante el uso del operador this.

<em><strong>Las funciones no tienen sentido para el uso de JSON como transportador de información, así que únicamente lo dejamos como una curiosidad de la notación de objetos :D</strong></em>
<h3>Arrays</h3>
Otra facultad de los elementos JSON es la capacidad de insertar arrays como atributos y asu vez dentro definimos elementos JSON:
<pre><code>var aNieto2k = {
    "edad" : "28",
    "ciudad" : "Palma de Mallorca, ES",
    "genero" : "hombre",
    "saludar" : function(aquien) {
    	alert("Hola, soy aNieto2k de " + this.ciudad + ", ¿Como estás " + aquien + "?");
    },
   <strong> "proyectos":[
    	{
    		"nombre" : 	"iMeneame.net",
    		"url"		 : 	"http://www.imeneame.net"
    	},
    	{
    		"nombre" :	"BlogoEdad",
    		"url"		 :  "http://edad.anieto2k.com"
    	}
    ]</strong>
};</code></pre>
De esta forma podemos recorrerlos como arrays que son:
<pre><code>var proyectos = aNieto2k.proyectos, html = '';
for (var x = 0 ; x &lt; proyectos.length ; x++) {
	html += '&lt;li&gt;&lt;a href="' + proyectos[x].url + '"&gt;' + proyectos[x].nombre + '&lt;/a&gt;&lt;/li&gt;';
}</code></pre>
<h3>Encadenando objetos JSON</h3>
Otra forma de agrupar elementos JSON es la de usar objetos JSON embebidos dentro de otros objetos JSON:
<pre><code>var aNieto2k = {
    "edad" : "28",
    "ciudad" : "Palma de Mallorca, ES",
    "genero" : "hombre",
    "saludar" : function(aquien) {
    	alert("Hola, soy aNieto2k de " + this.ciudad + ", ¿Como estás " + aquien + "?");
    },
  <strong>  "proyectos":{
    	"imeneame": {
    		"url"		 : 	"http://www.imeneame.net"
	    	},
  	  "blogoedad": {
    		"url"		 :  "http://edad.anieto2k.com"
	    	}
    }</strong>
};</code></pre>
Como podemos ver, realmente lo único que hemos hecho es insertar un objeto JSON dentro de un atributo padre, por lo que podemos acceder a el de la siguiente forma:
<pre><code>var URL = aNieto2k.proyectos.imeneame.url;</code></pre>
<h3>Úsos prácticos</h3>
Como sistema de almacenaje de datos, es perfecto para transportarlos de una página a otra, incluso de un sitio web a otro. Un ejemplo muy sencillo y recurrido es la posibilidad de obtener datos de Flickr mediante el uso de jQuery para obtener estos datos.
<pre><code>$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&amp;tagmode=any&amp;format=json&amp;jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("&lt;img/&gt;").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
          });
        });</code></pre>
En este ejemplo, sacado de <a href="http://docs.jquery.com/Ajax/jQuery.getJSON">la documentación de jQuery</a>, vemos como lanzamos una petición de <a href="http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&amp;tagmode=any&amp;format=json&amp;jsoncallback=?">las últimas imagenes enviadas a Flickr que hayan sido catalogadas con el tag "Cat"</a>. El resultado será evaluado y procesado para al final llegarnos a nosotros dentro de data, una variable que podremos recorrer como si de una variable estuvieramos hablando.
<h3>JSON nativo</h3>
Uno de los problemas encontrados con JSON es la evaluación de código, ya que este debe ser transformado en una variable para poder usarla y esto requiere el uso de <code>eval()</code> lo que hace que el tiempo de proceso se incremente considerablemente (<a href="http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/">ya vimos algo al respecto</a>).
<pre><code><strong>// Eval
</strong>var myObject = eval('(' + myJSONtext + ')');

<strong>// JSON Nativo
</strong>var myObject = JSON.parse(myJSONtext);

<strong>// Mix
</strong>var myObject = (JSON)?JSON.parse(myJSONtext): eval('(' + myJSONtext + ')');</code></pre>
Por suerte, los navegadores modernos (<a href="http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx">IE8</a>, <a href="https://developer.mozilla.org/En/Using_JSON_in_Firefox">FF3.5</a>, WebKit, ....) <a href="http://ejohn.org/blog/native-json-support-is-required/">están implementado funcionalidades</a> para olvidarnos de <code>eval()</code> y mejorar considerablemente el tiempo de proceso.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2009/10/13/jquery-animate-todo-lo-que-siempre-quisiste-saber/" rel="bookmark" title="Permanent Link: jQuery.animate, todo lo que siempre quisiste saber">jQuery.animate, todo lo que siempre quisiste saber</a></li><li><a href="http://www.anieto2k.com/2009/08/18/5-formas-de-usar-ajax-con-jquery/" rel="bookmark" title="Permanent Link: 5 formas de usar Ajax con jQuery">5 formas de usar Ajax con jQuery</a></li><li><a href="http://www.anieto2k.com/2010/01/09/todo-lo-que-necesitas-saber-sobre-los-formularios-html5/" rel="bookmark" title="Permanent Link: Todo lo que necesitas saber sobre los formularios HTML5">Todo lo que necesitas saber sobre los formularios HTML5</a></li><li><a href="http://www.anieto2k.com/2008/06/30/json-diff-compara-json-de-una-forma-muy-visual/" rel="bookmark" title="Permanent Link: JSON Diff, compara JSON de una forma muy visual">JSON Diff, compara JSON de una forma muy visual</a></li><li><a href="http://www.anieto2k.com/2007/05/14/javascript-json-editor-debuguea-tu-json/" rel="bookmark" title="Permanent Link: Javascript JSON Editor, debuguea tu JSON">Javascript JSON Editor, debuguea tu JSON</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/07/06/todo-lo-que-siempre-quisiste-saber-sobre-json/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Crea un chat como el de gMail/Facebook con jQuery</title>
		<link>http://www.anieto2k.com/2009/05/15/crea-un-chat-como-el-de-gmailfacebook-con-jquery/</link>
		<comments>http://www.anieto2k.com/2009/05/15/crea-un-chat-como-el-de-gmailfacebook-con-jquery/#comments</comments>
		<pubDate>Fri, 15 May 2009 18:19:25 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8206</guid>
		<description><![CDATA[Si estás buscando un chat para tu aplicación web, no dejes pasar este similar a los implementados en gMail o Facebook. Se trata de una implementación con jQuery y PHP que nos facilitará el trabajo de crearlo desde 0 nosotros mismo. El resultado, lo puedes ver en este ejemplo.[Descargar]Artículos relacionados Crea un chat en AjaxJaxie, [...]]]></description>
			<content:encoded><![CDATA[Si estás buscando un chat para tu aplicación web, no dejes pasar<a href="http://anantgarg.com/2009/05/13/gmail-facebook-style-jquery-chat/"> este similar a los implementados en gMail o Facebook</a>. Se trata de una implementación con jQuery y PHP que nos facilitará el trabajo de crearlo desde 0 nosotros mismo. El resultado, <a href="http://anantgarg.com/chat/samplec.php">lo puedes ver en este ejemplo</a>.[<a href="http://anantgarg.com/wp-content/uploads/2009/05/jquerychat.zip">Descargar</a>]<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/05/16/crea-un-chat-en-ajax/" rel="bookmark" title="Permanent Link: Crea un chat en Ajax">Crea un chat en Ajax</a></li><li><a href="http://www.anieto2k.com/2006/06/20/jaxie-otro-chat-con-ajax/" rel="bookmark" title="Permanent Link: Jaxie, otro chat con Ajax">Jaxie, otro chat con Ajax</a></li><li><a href="http://www.anieto2k.com/2007/01/17/yshout-4-mejorando-el-chat/" rel="bookmark" title="Permanent Link: yShout 4, mejorando el chat">yShout 4, mejorando el chat</a></li><li><a href="http://www.anieto2k.com/2006/03/12/pon-un-chat-en-tu-web/" rel="bookmark" title="Permanent Link: Pon un chat en tu web">Pon un chat en tu web</a></li><li><a href="http://www.anieto2k.com/2006/05/27/yshout-v2-chat-ajaxphp/" rel="bookmark" title="Permanent Link: YShout v2, Chat ajax+php">YShout v2, Chat ajax+php</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/05/15/crea-un-chat-como-el-de-gmailfacebook-con-jquery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Espectacular administrador de archivos con MooTools</title>
		<link>http://www.anieto2k.com/2009/05/03/espectacular-administrador-de-archivos-con-mootools/</link>
		<comments>http://www.anieto2k.com/2009/05/03/espectacular-administrador-de-archivos-con-mootools/#comments</comments>
		<pubDate>Sun, 03 May 2009 21:09:16 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[MooTools]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8119</guid>
		<description><![CDATA[Esta tarde @diegojimenez publicaba via Twitter un enlace a este espectacular administrador de ficheros desarrollado con MooTools. Con él nos será posible copiar, cortar, pegar incluso previsualizar ficheros, leer ficheros, descomprimir ficheros comprimidos o reproducir ficheros audio. Todo ello desde nuestro navegador. (Ver Imagen) Entre las funcionalidades de las que disponemos nos encontramos con: Navegación [...]]]></description>
			<content:encoded><![CDATA[Esta tarde <a href="http://twitter.com/diegojimenez/status/1687954373">@diegojimenez publicaba via Twitter</a> un enlace a <a href="http://og5.net/christoph/article/MooTools_based_FileManager">este espectacular administrador de ficheros desarrollado con MooTools</a>. Con él nos será posible copiar, cortar, pegar incluso previsualizar ficheros, leer ficheros, descomprimir ficheros comprimidos o reproducir ficheros audio. Todo ello desde nuestro navegador.
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/05/filemanager_mootools.jpg"><img src="http://www.anieto2k.com/wp-content/uploads/2009/05/filemanager_mootools-504x300.jpg" alt="filemanager_mootools" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2009/05/filemanager_mootools.jpg"><small>(Ver Imagen)</small></a>

Entre las funcionalidades de las que disponemos nos encontramos con:
<ul>
	<li>Navegación por los ficheros y directorios de tu servidor web</li>
	<li>Renombrar, mover, borrar, copiar y descargar ficheros</li>
	<li>Ver previsualización de imagenes, ficheros de texto, ficheros comprimidos o ficheros de audio</li>
	<li>Interface muy agradable a la vista</li>
	<li>Subir imagenes mediante <a href="http://www.anieto2k.com/2007/05/24/fancyupload-multiupload-por-ajax-con-mootools/">FancyUpload</a></li>
	<li>Posibilidad de auto redimencionar imagenes mientras subimos</li>
	<li>Úsalo para seleccionar un fichero de donde quieras que puedes necesitar en el backend de tus aplicaciones</li>
	<li>Integración con <a href="http://tinymce.moxiecode.com/">TinyMCE</a></li>
</ul>
<h3>Instalación</h3>
Despues de haber añadido las llamadas pertitentes al <code>&lt;head /&gt;</code> de nuestra aplicación deberemos definir nuestro FileManager con las opciones que deseemos. Y asignar el elemento que hará visible el administrador de ficheros.
<pre><code>var manager = new FileManager({
   url: 'manager.php',
   assetBasePath: '../Assets',
   language: 'en',
   uploadAuthData: {session: 'MySessionId'}
 });
 $('example1').addEvent('click', manager.show.bind(manager));</code></pre>
Para interactuar con los ficheros del servidor debemos especificar el fichero <code>.php</code> que realizará las tareas que solicitemos.
<pre><code>&lt;?php
include('../Backend/FileManager.php');
$browser = new FileManager(array(
  'directory' =&gt; 'Files/',
  'assetBasePath' =&gt; '../Assets',
  'upload' =&gt; true,
  'destroy' =&gt; true,
));
$browser-&gt;fireEvent(!empty($_GET['event']) ? $_GET['event'] : null);</code></pre>
Como podemos ver, el código es muy sencillo y tenemos a nuestra disposición un objeto que nos permitirá trabajar con él más fácilmente.
<h3>Demo</h3>
Tenemos dos demos para hacernos una idea de lo que podremos conseguir.
<ul>
	<li><a href="http://og5.net/christoph/Scripts/FileManager/Demos/">Demo de FileManager</a></li>
	<li><a href="http://og5.net/christoph/Scripts/FileManager/Demos/tinymce.php">Integración con TinyMCE</a></li>
</ul>
<h3>Descargar</h3>
Podeis descargarlo <a href="http://og5.net/christoph/article/MooTools_based_FileManager">directamente desde aqui</a>.</p><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2008/10/17/mootools-121-esta-en-la-calle/" rel="bookmark" title="Permanent Link: MooTools 1.2.1 está en la calle">MooTools 1.2.1 está en la calle</a></li><li><a href="http://www.anieto2k.com/2009/04/28/mootools-122/" rel="bookmark" title="Permanent Link: MooTools 1.2.2">MooTools 1.2.2</a></li><li><a href="http://www.anieto2k.com/2007/09/24/mootools-ext-adapter/" rel="bookmark" title="Permanent Link: MooTools Ext Adapter">MooTools Ext Adapter</a></li><li><a href="http://www.anieto2k.com/2008/06/13/mootools-12-cheat-sheet/" rel="bookmark" title="Permanent Link: MooTools 1.2 cheat sheet">MooTools 1.2 cheat sheet</a></li><li><a href="http://www.anieto2k.com/2008/06/10/mootools-12-ve-la-luz/" rel="bookmark" title="Permanent Link: MooTools 1.2 ve la luz">MooTools 1.2 ve la luz</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/05/03/espectacular-administrador-de-archivos-con-mootools/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>BaseJS, un framework JS exclusivo para el iPhone</title>
		<link>http://www.anieto2k.com/2009/04/27/basejs-un-framework-js-exclusivo-para-el-iphone/</link>
		<comments>http://www.anieto2k.com/2009/04/27/basejs-un-framework-js-exclusivo-para-el-iphone/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 17:07:47 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=8057</guid>
		<description><![CDATA[Paul Armstrong, ha desarrollado BaseJS. Un framework Javascript especializado en los nuevos dispositivos móviles, concretamente los que usan WebKit como navegador web. new io('/results.json', { format: 'json', method: 'post', params: { mustache: true }, onSuccess: function(response) { alert(response); // response == data returned from server }, onFailure: function() { alert('There was an error getting the [...]]]></description>
			<content:encoded><![CDATA[<strong>Paul Armstrong</strong>, ha desarrollado <a href="http://paularmstrongdesigns.com/weblog/basejs-a-mobile-javascript-framework">BaseJS</a>. Un <a href="http://www.anieto2k.com/2008/09/28/crea-tu-propio-framework-javascript/">framework Javascript</a> especializado en los nuevos dispositivos móviles, concretamente los que usan WebKit como navegador web.
<pre><code>new io('/results.json', {
    format: 'json',
    method: 'post',
    params: { mustache: true },
    onSuccess: function(response) { 
        alert(response); // response == data returned from server
    }, 
    onFailure: function() { 
        alert('There was an error getting the data');
    }
});</code></pre>
Una de las curiosidades de este framework es que usa <a href="http://www.anieto2k.com/2008/08/25/sizzle-acelerando-la-seleccion-de-elementos-dom/">Sizzle como selector CSS3</a>, lo que nos permite obtener todas las posibilidades establecidas por el estandar <code>CSS3</code> con la que seleccionar elementos de nuestro DOM, sin tener en cuenta la velocidad del mismo. Todo esto siempre y cuando <a href="http://www.anieto2k.com/2007/08/29/selectors-api-mejorando-la-interaccion-con-nuestro-dom/">el navegador no tenga incorporado <code>querySelector()</code></a>, en caso contrario el se encargará de generar la llamada ha <em>Sizzle </em>para que dispongamos de el selector.

En <strong>tan solo 8kb</strong>, no podemos hacer maravillas, pero nos dará más de lo que necesitamos para hacer aplicaciones robustas y completamente compatibles con estos dispositivos.

El framework<a href="http://www.anieto2k.com/2007/06/19/extiende-htmlelement-mediante-javascript/"> se encarga de extender los objetos nativos del lenguaje y elementos del DOM</a>, algo diferente a lo que hace jQuery, que extiende elementos ondemand. De esta forma una vez cargada la página, todos los elementos disponen de las nuevas funcionalidades.

Tambien se aprovecha de <a href="http://www.niallkennedy.com/blog/2008/02/iphone-cache-performance.html">la curiosa "caché" del iphone</a> para almacenar datos. Y es que esta caché, por llamarla de alguna manera, no es una caché en si mismo, sinó un sistema de ficheros menores a 25kb que mediante la modificación de cabeceras "<code>Expires</code>" y "<code>Cache-contro</code>l" nos <em>permite almacenar 19 ficheros de 25kb</em> lo que es igual a<strong> 475kb de caché</strong> :D (Aunque se borrará al reinciar el dispositivo)

Podeis <a href="http://github.com/paularmstrong/basejs/blob/ee2335ca3556ff437df5a2bfacf303c590288582/source/base.js">ver el código</a> y <a href="http://paularmstrongdesigns.com/projects/basejs/docs/">la documentación</a> o si directametne <a href="http://cloud.github.com/downloads/paularmstrong/basejs/basejs-1.0.rc1.tar.gz">quereis descargarlo y poneros a trabajar con él desde aqui mismo</a>.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2008/07/07/framework-css-y-xhtml-para-desarrollar-en-iphone-y-ipod-touch/" rel="bookmark" title="Permanent Link: Framework CSS y XHTML para desarrollar en iPhone y iPod Touch">Framework CSS y XHTML para desarrollar en iPhone y iPod Touch</a></li><li><a href="http://www.anieto2k.com/2009/12/16/pastrykit-framework-jscss-para-trabajar-con-iphone-de-apple/" rel="bookmark" title="Permanent Link: PastryKit, framework JS/CSS para trabajar con iPhone de Apple">PastryKit, framework JS/CSS para trabajar con iPhone de Apple</a></li><li><a href="http://www.anieto2k.com/2008/07/22/aplicacion-nativa-de-worpdress-para-iphone-disponible/" rel="bookmark" title="Permanent Link: Aplicación nativa de Worpdress para iPhone disponible">Aplicación nativa de Worpdress para iPhone disponible</a></li><li><a href="http://www.anieto2k.com/2007/06/13/%c2%bfcomo-se-vera-digg-desde-el-iphone/" rel="bookmark" title="Permanent Link: ¿Como se verá Digg desde el iphone?">¿Como se verá Digg desde el iphone?</a></li><li><a href="http://www.anieto2k.com/2007/09/18/anieto2k-en-el-iphone/" rel="bookmark" title="Permanent Link: aNieto2k en el iPhone">aNieto2k en el iPhone</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/04/27/basejs-un-framework-js-exclusivo-para-el-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carga asíncrona de grandes cantidades de dátos con Ajax</title>
		<link>http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/</link>
		<comments>http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 21:14:38 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[estandares]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=7780</guid>
		<description><![CDATA[Ajax es una técnica para cargar asíncronamiente datos que podremos usar en nuestras páginas web. Esta técnica ha permitido a las aplicaciones web que evolucionen hasta el nivel actual y darán lugar a nuevas aplicaciones más potentes y complejas. Esta técnica se basa en el uso de xmlhttprequest() para lanzar llamadas de forma asíncrona al [...]]]></description>
			<content:encoded><![CDATA[<a href="http://www.anieto2k.com/category/programacion/ajax/">Ajax</a> es una técnica para cargar asíncronamiente datos que podremos usar en nuestras páginas web. Esta técnica ha permitido a las aplicaciones web que evolucionen hasta el nivel actual y darán lugar a nuevas aplicaciones más potentes y complejas.

Esta técnica se basa en el uso de <code>xmlhttprequest()</code> para lanzar llamadas de forma asíncrona al servidor, pudiendo así devolver datos cargados posteriormente a la carga de la página. De esta forma la carga inicial de la página puede ser menor y dejar a elección del usuario cargar los datos a medida que los vayan necesitando.

El problema no lo encontramos con la cantidad de datos. Si el número de datos devueltos por el servidor es muy alto esto suele convertirse en una larga espera, con <a href="http://www.anieto2k.com/2009/02/02/preloadersnet-imagenes-de-loading-en-3d/">el fichero .gif de loading</a> reglamentario.

Para intentar mitigar este problema he estado haciendo una serie de pruebas, con fín de dejar los ficheros XML que hasta ahora he estado usando en algunos proyectos.
<h3>XML</h3>
Durante mucho tiempo ha sido el sistema usado en muchas implementaciones para obtener datos de forma asíncrona. De ahí el propio nombre de Aja<strong>X (</strong><em>Asynchronous JavaScript And XML)</em>. Estos ficheros, generalmente ofrecen mayor interconexión con multiples herramientas.

En un uso para carga asíncrona, nos encontramos como príncipal problema el peso del fichero y tiempo invertido en recorrer el fichero XML para obtener los datos.
<pre><code>....
&lt;hotel&gt;
	&lt;code&gt;0000&lt;/code&gt;
	&lt;name&gt;Hotel0&lt;/name&gt;
	&lt;direction&gt;Calle0&lt;/direction&gt;
	&lt;telef&gt;Telf0&lt;/telef&gt;
	&lt;geo&gt;
		&lt;lat&gt;00&lt;/lat&gt;
		&lt;lng&gt;00&lt;/lng&gt;
	&lt;/geo&gt;
&lt;/hotel&gt;
....
// Javascript
var hotelDescription = data, hotelList = [];
var data = data.getElementsByTagName("hotel");
for (var x in data) {
	var hotel = data[x];
	if (!hotel.getElementsByTagName) continue;
	hotelList.push(hotel.getElementsByTagName("name")[0].firstChild.data);

		hotelDescription[hotel.getElementsByTagName("name")[0].firstChild.data] = {
			code: hotel.getElementsByTagName("code")[0].firstChild.data,
			name: hotel.getElementsByTagName("name")[0].firstChild.data,
			direction: hotel.getElementsByTagName("direction")[0].firstChild.data,
			telf: hotel.getElementsByTagName("telef")[0].firstChild.data,
			geo: {
				lat: hotel.getElementsByTagName("lat")[0].firstChild.data,
				lng: hotel.getElementsByTagName("lng")[0].firstChild.data
			}
		};

}</code></pre>
<h3>JSON</h3>
La primera alternativa, fué JSON, una implementación muy clara y natural de mostrar datos. Al tratarse de un fichero TXT podemos hacer que ocupe menos espacio y al evitar la estructura XML conseguimos que el tiempo invertido en recorrer el XML para obtener los datos.

Pero por contra, para poder usar los datos obtenidos hemos de usar la función <code>eval()</code> lo que nos penaliza la carga del fichero. Una vez evaluado el código el tiempo empleado en preparar los datos para poder usarlos es mínimo y sin duda, el más rápido de los sistemas exáminados.
<pre><code>....
{
	code: 0000,
	name: 'Hotel0',
	direction: 'Calle0',
	telef: 'Telf0',
	geo: {
		lat: 00,
		lng: 00
	}
}
....
// Javascript
var hotelDescription = data, hotelList = [];
for (var x in data) hotelList.push(data[x].name);</code></pre>
<h3>TXT</h3>
La gente de <a href="http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/">Flickr comentaba hace poco como hicieron para devolver más de 10.000 resultados en menos de 200ms</a>. Y obviamente me ví obligado a contemplar esta técnica.

Se basa en usar una estructura preestablecida en un fichero de texto plano. Usando un separador por registro y otro por campos dentro de cada registro. De esta forma a la hora de cargar el fichero simplemente tendremos que hacer una serie de <code>split()</code> para cortar la cadena y convertirla en una variable que podamos usar.

Como mayor ventaja, esta técnica ofrece un tamaño de fichero mucho más pequeño que los comentados anteriormente. Por contra el tiempo de proceso sobre los datos para obtener una variable que pdamos usar es mucho mayor que la necesaria para procesar el fichero JSON, pero bastante menor que el empleado para un fichero XML.
<pre><code>0000:Hotel0:Calle0:Telf0:00:00|...
// Javascript
var tmp = data.split("|");
var hotelList = [];
var hotelDescription = [];
for (var x = 0, len = tmp.length; x&lt;len; x++) {
	var hotel = tmp[x].split(":");

	hotelList.push(hotel[1]);

	hotelDescription[hotel[1]] = {
		code: hotel[0],
		name: hotel[1],
		direction: hotel[2],
		telf: hotel[3],
		geo: {
			lat: hotel[4],
			lng: hotel[5]
		}
	};
}</code></pre>
<h3>Comparativas</h3>
Para las pruebas, he realizado <a href="http://www.anieto2k.com/demo/bigajax/">una pequeña aplicacion</a> que nos permite cargar 500, 1000, 2000, 5000 o 10000 registros en los formatos anteriores (XML, JSON o TXT). Para los gráficos he usado los resultados obtenidos en Firefox 3.0.7 en Mac Os X.

Si queréis podéis probar por vosotros mismos los resultados que obtendríais en diferentes navegadores directamente <a href="http://www.anieto2k.com/demo/bigajax/">aqui</a>.
<h4>500 registros</h4>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/500_registros.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/500_registros-600x243.png" alt="500_registros" /></a></p>

<h4>1000 registros</h4>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/10000_registros.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/10000_registros-579x300.png" alt="10000_registros" /></a></p>

<h4>2000 registros</h4>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/2000_registros2.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/2000_registros2-600x252.png" alt="2000_registros2" /></a></p>

<h4>5000 registros</h4>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/5000_registros.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/5000_registros-600x267.png" alt="5000_registros" /></a></p>

<h4>10000 registros</h4>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/10000_registros.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/10000_registros-579x300.png" alt="10000_registros" /></a></p>

Parece que los gráficos hablan por si solos, y podemos sacar una información interesante.
<h3>Conclusiones</h3>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/03/bigajax.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/03/bigajax-600x235.png" alt="bigajax" /></a></p>

De los resultados obtenemos las siguientes premisas:
<h4>XML</h4>
<ul>
	<li>Son los ficheros más pesados</li>
	<li>El tiempo de procesamiento es mayor que los demás.</li>
</ul>
<h4>JSON</h4>
<ul>
	<li>Son los ficheros que más tiempo tardan en cargar completamente.</li>
	<li>El tiempo de procesamiento es el más rápido de los testeados.</li>
</ul>
<h4>TXT</h4>
<ul>
	<li>Son los ficheros menos pesados.</li>
	<li>El tiempo de proceso y carga son bajos aunque no destacan frente a los demás.</li>
	<li>El tiempo total es el menor de los testeados.</li>
</ul>
<h3>Descargar el proyecto</h3>
He subido <a href="http://github.com/aNieto2k/bigajax/tree/master">el proyecto a Github</a> para que los descargueis y usais si quereis.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2009/05/06/jlinq-simulando-sql-para-buscar-en-json/" rel="bookmark" title="Permanent Link: jLinq, simulándo SQL para buscar en JSON">jLinq, simulándo SQL para buscar en JSON</a></li><li><a href="http://www.anieto2k.com/2006/06/30/%c2%bfajax-o-ajat/" rel="bookmark" title="Permanent Link: ¿AjaX o AjaT?">¿AjaX o AjaT?</a></li><li><a href="http://www.anieto2k.com/2007/10/07/hazte-tus-propios-mootabs-con-mootools/" rel="bookmark" title="Permanent Link: Hazte tus propios MooTabs con MooTools">Hazte tus propios MooTabs con MooTools</a></li><li><a href="http://www.anieto2k.com/2006/07/11/aparace-el-concepto-w-ajax/" rel="bookmark" title="Permanent Link: Aparece el Concepto W Ajax">Aparece el Concepto W Ajax</a></li><li><a href="http://www.anieto2k.com/2006/02/20/zenphoto-galeria-de-fotos-en-ajax/" rel="bookmark" title="Permanent Link: ZenPhoto, galería de fotos en ajax">ZenPhoto, galería de fotos en ajax</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Chatino: Chat de tan solo 7KB con Pseudo comet</title>
		<link>http://www.anieto2k.com/2009/03/11/chatino-chat-de-tan-solo-7kb-con-pseudo-comet/</link>
		<comments>http://www.anieto2k.com/2009/03/11/chatino-chat-de-tan-solo-7kb-con-pseudo-comet/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 12:30:59 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[comet]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=7688</guid>
		<description><![CDATA[Mi tocayo, Andrés Fernandez me avisa de que ha desarrollado Chatino. Un Chat desarrollado en javascript usando una técnica de pseudo comet para conseguir un ajax de larga duración en tan solo 7kb (en el usuario). Una buena herramienta para los que necesiten un chat potente y funcional.Artículos relacionados Primeras capturas de CometJaxie, otro chat [...]]]></description>
			<content:encoded><![CDATA[Mi tocayo, <a href="http://www.disegnocentell.com.ar/">Andrés Fernandez</a> me avisa de que ha desarrollado <a href="http://www.disegnocentell.com.ar/notas2.php?id=240">Chatino</a>. Un Chat desarrollado en javascript usando una técnica de pseudo comet para conseguir un ajax de larga duración en tan <strong>solo 7kb (en el usuario)</strong>. Una buena herramienta para los que necesiten un chat potente y funcional.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/05/31/primeras-capturas-de-comet/" rel="bookmark" title="Permanent Link: Primeras capturas de Comet">Primeras capturas de Comet</a></li><li><a href="http://www.anieto2k.com/2006/06/20/jaxie-otro-chat-con-ajax/" rel="bookmark" title="Permanent Link: Jaxie, otro chat con Ajax">Jaxie, otro chat con Ajax</a></li><li><a href="http://www.anieto2k.com/2009/05/15/crea-un-chat-como-el-de-gmailfacebook-con-jquery/" rel="bookmark" title="Permanent Link: Crea un chat como el de gMail/Facebook con jQuery">Crea un chat como el de gMail/Facebook con jQuery</a></li><li><a href="http://www.anieto2k.com/2006/05/16/crea-un-chat-en-ajax/" rel="bookmark" title="Permanent Link: Crea un chat en Ajax">Crea un chat en Ajax</a></li><li><a href="http://www.anieto2k.com/2006/05/27/yshout-v2-chat-ajaxphp/" rel="bookmark" title="Permanent Link: YShout v2, Chat ajax+php">YShout v2, Chat ajax+php</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/03/11/chatino-chat-de-tan-solo-7kb-con-pseudo-comet/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Preloaders.net, imagenes de loading en 3D</title>
		<link>http://www.anieto2k.com/2009/02/02/preloadersnet-imagenes-de-loading-en-3d/</link>
		<comments>http://www.anieto2k.com/2009/02/02/preloadersnet-imagenes-de-loading-en-3d/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 14:56:14 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[loading]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=7421</guid>
		<description><![CDATA[Jesus Moreno me muestra Preloaders.net, un sitio al estilo ajaxload.info que nos permite generar imagenes de "Cargando" para nuestras aplicaciones, pero en esta podemos generar imagenes con animaciones en 3D.Artículos relacionados Colección de imagenes para LoadingAjaxLoad, imagenes para tus cargandoMás Indicadores para nuestros cargando&#8230;Enlaces rápidos (3)Otra librería para trabajar con Ajax]]></description>
			<content:encoded><![CDATA[<strong>Jesus Moreno</strong> me muestra <a href="http://preloaders.net/">Preloaders.net</a>, un sitio al estilo <a href="http://ajaxload.info/">ajaxload.info</a> que nos permite generar imagenes de "Cargando" para nuestras aplicaciones, pero en esta podemos generar imagenes con animaciones en 3D.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/03/01/coleccion-de-imagenes-para-loading/" rel="bookmark" title="Permanent Link: Colección de imagenes para Loading">Colección de imagenes para Loading</a></li><li><a href="http://www.anieto2k.com/2007/01/05/ajaxload-imagenes-para-tus-cargando/" rel="bookmark" title="Permanent Link: AjaxLoad, imagenes para tus cargando">AjaxLoad, imagenes para tus cargando</a></li><li><a href="http://www.anieto2k.com/2006/03/23/mas-indicadores-para-nuestros-cargando/" rel="bookmark" title="Permanent Link: Más Indicadores para nuestros cargando&#8230;">Más Indicadores para nuestros cargando&#8230;</a></li><li><a href="http://www.anieto2k.com/2006/05/29/enlaces-rapidos-3/" rel="bookmark" title="Permanent Link: Enlaces rápidos (3)">Enlaces rápidos (3)</a></li><li><a href="http://www.anieto2k.com/2006/03/02/otra-libreria-para-trabajar-con-ajax/" rel="bookmark" title="Permanent Link: Otra librería para trabajar con Ajax">Otra librería para trabajar con Ajax</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.179.240"><img rel="38.107.179.240" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/02/02/preloadersnet-imagenes-de-loading-en-3d/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

