<?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>Emilio - Consultor SEO &#187; Ajax</title>
	<atom:link href="http://emilio.aesinformatica.com/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://emilio.aesinformatica.com</link>
	<description>Historias de un informático</description>
	<lastBuildDate>Mon, 15 Apr 2013 08:03:23 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Colección de datagrids en Ajax</title>
		<link>http://emilio.aesinformatica.com/2009/04/13/coleccion-de-datagrids-en-ajax/</link>
		<comments>http://emilio.aesinformatica.com/2009/04/13/coleccion-de-datagrids-en-ajax/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 07:34:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=454</guid>
		<description><![CDATA[Impresionante colección de datagrids en AJAX para manejar nuestros registros de una manera cómodo, sencilla y agradable. Art&#237;culo original escrito por Emilio. Todos los art&#237;culos publicados bajo el dominio aesinformatica.com est&#225;n protegidos bajo la Licencia Creative Commons. Mostrar y ocultar información en una capa al pasar el ratónFunción javascript para validar fechasMostrar mensajes en javascriptAjax [...]]]></description>
				<content:encoded><![CDATA[<p>Impresionante <a href="http://www.smashingmagazine.com/2007/05/30/tables-and-data-grids-with-ajax-dhtml-javascript/" target="_blank">colección de datagrids en AJAX</a><a href="http://www.smashingmagazine.com/2007/05/30/tables-and-data-grids-with-ajax-dhtml-javascript/" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a> para manejar nuestros registros de una manera cómodo, sencilla y agradable.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" id="wp_rp_first"><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2008/04/25/funcion-javascript-para-validar-fechas/" class="wp_rp_title">Función javascript para validar fechas</a></li><li ><a href="http://emilio.aesinformatica.com/2008/10/27/mostrar-mensajes-en-javascript/" class="wp_rp_title">Mostrar mensajes en javascript</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2008/02/05/treemap-con-javascript/" class="wp_rp_title">TreeMap con Javascript</a></li><li ><a href="http://emilio.aesinformatica.com/2008/11/26/recargar-un-frame-con-javascript/" class="wp_rp_title">Recargar un frame con javascript</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/04/13/coleccion-de-datagrids-en-ajax/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Errores que se cometen al programar en Ajax</title>
		<link>http://emilio.aesinformatica.com/2009/04/10/errores-que-se-cometen-al-programar-en-ajax/</link>
		<comments>http://emilio.aesinformatica.com/2009/04/10/errores-que-se-cometen-al-programar-en-ajax/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 10:58:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=682</guid>
		<description><![CDATA[Desde SentidoWeb nos traen un listado de los típicos errores que se suelen cometer al programar una aplicación Web con Ajax. Ajax es una herramienta, no un juguete: en muchos casos el uso de Ajax es totalmente innecesario. No se lleva bien con el botón back del navegador: este botón es necesario para la usabilidad [...]]]></description>
				<content:encoded><![CDATA[<p>Desde <a href="http://www.sentidoweb.com" target="_blank">SentidoWeb</a><a href="http://www.sentidoweb.com" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a> nos traen un listado de los típicos errores que se suelen cometer al programar una aplicación Web con Ajax.</p>
<ul>
<li><strong>Ajax es una herramienta, no un juguete</strong>: en muchos casos el uso de Ajax es totalmente innecesario.</li>
<li><strong>No se lleva bien con el botón <em>back</em> del navegador</strong>: este botón es necesario para la usabilidad y javascript no se lleva muy bien con él.</li>
<li><strong>No avisar de que se realiza una acción</strong>: cuando hago click en alguna zona de la página y se genera una acción, se debería avisar de ello para que el usuario sepa que se están actualizando datos.</li>
<li><strong>Dejar a los usuarios offline de lado</strong>: que cada vez haya más gente con conexión a internet, no quita que nos debamos olvidar de la gente que apenas hace uso de ella, por ello es necesario pensar que las páginas en Ajax muestran datos de forma dinámica, y que no se producirá el refresco de datos si el usuario está offline.</li>
<li><strong>Hacer esperar al usuario</strong>: la &#8216;A&#8217; de Ajax es de asíncrono, no es necesario que el usuario haga algo para obtener datos, nos podemos adelantar a sus acciones e ir realizando peticiones para obtener esos datos y que el usuario no tenga que esperar la respuesta.</li>
<li><strong>Enviar información sensible de forma visible</strong>: en muchas ocasiones enviamos al navegador los mismos datos que se reciben en la aplicación, la diferencia es que la aplicación filtra esos datos y muestra los que convienen. En el navegador, aunque no se muestren todos, si se envían se podrán ver.</li>
<li><strong>Asumir que Ajax es una única plataforma</strong>: hay que testear correctamente las aplicaciones Ajax para que se puedan ver en las distintas plataformas que permiten Ajax, por ejemplo los distintos navegadores.</li>
<li><strong>Múltiples usuarios</strong>: si tu aplicación la usan varios usuarios a la vez, ten en cuenta que puede haber problemas al actualizar datos por parte de unos y visualizarlos por parte de otros.</li>
<li><strong>Excesivo trabajo para el navegador</strong>: a veces el uso de aplicaciones Ajax hace que el navegador tenga que realizar muchas tareas, lo cual puede no ser bueno para el rendimiento.</li>
<li><strong>Olvidarse de aquellos que no tienen Javascript</strong>: según las estadísticas son un 11%, por ello siempre hay que ofrecer una alternativa no Ajax.</li>
<li><strong>No usar enlaces</strong>: al refrescarse el contenido dinámicamente, nos olvidamos de los enlaces para poder acceder a esa información.</li>
<li><strong>Salirse de lo común en la usabilidad</strong>: al permitirnos realizar operaciones poco habituales, nos encontramos con la circunstancia de que esperemos que el usuario realice una acción que este no espera que se tenga que hacer así. La gente suele estar acostumbrada a realizar siempre lo mismo.</li>
<li><strong>No realizar cambios en cascada</strong>: nos olvidamos de que cuando cambia una parte de la página deben cambiar a su vez otras partes relacionadas.</li>
</ul>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/30/mandar-emails-con-php/" class="wp_rp_title">Mandar emails con php</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/12/ponte-a-prueba-europafm/" class="wp_rp_title">Ponte a prueba, EuropaFM</a></li><li ><a href="http://emilio.aesinformatica.com/2008/01/06/eliminar-un-directorio-con-php/" class="wp_rp_title">Eliminar un directorio con PHP</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/04/10/errores-que-se-cometen-al-programar-en-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esquinas redondeadas con CSS y Jquery</title>
		<link>http://emilio.aesinformatica.com/2009/04/06/esquinas-redondeadas-con-css-y-jquery/</link>
		<comments>http://emilio.aesinformatica.com/2009/04/06/esquinas-redondeadas-con-css-y-jquery/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 09:01:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Css]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=721</guid>
		<description><![CDATA[Otra sencilla manera de conseguir ese efecto de esquina redondeada en nuestras páginas es utilizar rounded Corners with Jquery. Art&#237;culo original escrito por Emilio. Todos los art&#237;culos publicados bajo el dominio aesinformatica.com est&#225;n protegidos bajo la Licencia Creative Commons. Mostrar y ocultar información en una capa al pasar el ratónOcultar y mostrar la barra de [...]]]></description>
				<content:encoded><![CDATA[<p>Otra sencilla manera de conseguir ese efecto de esquina redondeada en nuestras páginas es utilizar <a rel="nofollow" href="http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery" target="_blank">rounded Corners with Jquery</a>.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/17/ocultar-y-mostrar-la-barra-de-navegacion/" class="wp_rp_title">Ocultar y mostrar la barra de desplazamiento</a></li><li ><a href="http://emilio.aesinformatica.com/2008/10/23/css-compatible-con-firefox-y-explorer/" class="wp_rp_title">CSS compatible con Firefox y Explorer</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/29/menus-css-2/" class="wp_rp_title">Menús CSS</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/04/06/esquinas-redondeadas-con-css-y-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Encuestas para tu web</title>
		<link>http://emilio.aesinformatica.com/2009/03/03/encuestas-para-tu-web/</link>
		<comments>http://emilio.aesinformatica.com/2009/03/03/encuestas-para-tu-web/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 07:53:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=720</guid>
		<description><![CDATA[Inserta encuentas creadas con ajax en tu página web de manera sencilla con AJAX Poll, para su funcionamiento requiere Php y Mysql. Art&#237;culo original escrito por Emilio. Todos los art&#237;culos publicados bajo el dominio aesinformatica.com est&#225;n protegidos bajo la Licencia Creative Commons. Ajax con JqueryMandar emails con phpAjax tiene competenciaMostrar y ocultar información en una [...]]]></description>
				<content:encoded><![CDATA[<p>Inserta encuentas creadas con ajax en tu página web de manera sencilla con <a rel="nofollow" href="http://www.dhtmlgoodies.com/index.html?whichScript=ajax-poller" target="_blank">AJAX Poll</a>, para su funcionamiento requiere Php y Mysql.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/30/mandar-emails-con-php/" class="wp_rp_title">Mandar emails con php</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2008/01/06/eliminar-un-directorio-con-php/" class="wp_rp_title">Eliminar un directorio con PHP</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/" class="wp_rp_title">Empezando con Ajax</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/03/03/encuestas-para-tu-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatizar el envío de datos a un formulario con Jquery</title>
		<link>http://emilio.aesinformatica.com/2009/02/18/automatizar-el-envio-de-datos-a-un-formulario-con-jquery/</link>
		<comments>http://emilio.aesinformatica.com/2009/02/18/automatizar-el-envio-de-datos-a-un-formulario-con-jquery/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 11:20:01 +0000</pubDate>
		<dc:creator>Emilio</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=2971</guid>
		<description><![CDATA[Mientras trabajaba con Jquery para adaptar mis antiguos formularios para que trabajen con Ajax encontré un problema, resulta que al enviar datos mediante Ajax y Jquery a una página dinámica, estos sólo se pueden mandar a través de una cadena preparada, veamos un ejemplo $.ajax({         type: "POST",         url: "alta.php",         data: "nombre=Jose&#38;id=15",         success: function(html){ $.("#destino").html(html)       [...]]]></description>
				<content:encoded><![CDATA[<p>Mientras trabajaba con Jquery para adaptar mis antiguos formularios para que trabajen con Ajax encontré un problema, resulta que al enviar datos mediante <a title="Ajax y Jquery" href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/">Ajax y Jquery</a> a una <strong>página dinámica</strong>, estos sólo se pueden mandar a través de una cadena preparada, veamos un ejemplo</p>
<pre><code>$.ajax({
        type: "POST",
        url: "alta.php",
        <strong>data: "nombre=Jose&amp;id=15"</strong>,
        success: function(html){
             $.("#destino").html(html)
        }
});</code></pre>
<p>He puesto en mayúsculas la línea en la que se mandan los parámetros. No he trabajado mucho con estas tecnologías pero por más que he buscado no he sido capaz de encontrar otra solución para mandar los parámetros.</p>
<p>El problema, es que la validación de los datos tiendo a hacerla en el destino y no en el formulario origen, por lo que siempre me he limitado a enviar lo que fuera y ya vería después como gestionarlo, pero claro, Ajax y Jquery son más de la opinión de &#8220;te lo valido en el momento&#8221; por lo que suelen tratar los datos en la misma función que los enviará y por eso pueden crear la cadena.</p>
<p>Para mí es un incordio y tendría que modificar muchos formularios por lo que no estoy dispuesto, como solución, he utilizado <a title="Manipular el DOM de un documento HTML con Javascript" href="http://emilio.aesinformatica.com/2009/02/18/manipulando-el-dom-con-javascript/">DOM</a> para generar automáticamente esa cadena para cualquier formulario.</p>
<pre><code>var objs = document.getElementsByTagName("INPUT");

var str ="";
var j=0;
for (var i=0; i&lt;objs.length; i++) {
   if(j!=0) str+="&amp;";
   if(objs[i].value != ""){
      str += objs[i].name + "=" + objs[i].value;
      j++;
   }
}</code></pre>
<p>Básicamente lo que hago es recoger todos los input del documento (<em>si hubiera más, habría que filtrarlos por el formulario correcto o mediante el id, pero ya no sería muy genérico..</em>) y generar la cadena para mandar.</p>
<p>Al final, tendríamos en str la cadena de datos a enviar por lo que la función ajax quedaría</p>
<pre><code>$.ajax({
        type: "POST",
        url: "alta.php",
        <strong>data: str</strong>,
        success: function(html){
             $.("#destino").html(html)
        }
});</code></pre>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2008/02/02/pesarse-en-la-bascula/" class="wp_rp_title">Pesarse en la báscula</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2008/04/25/funcion-javascript-para-validar-fechas/" class="wp_rp_title">Función javascript para validar fechas</a></li><li ><a href="http://emilio.aesinformatica.com/2009/05/26/nuevo-trabajo-en-traffic4u/" class="wp_rp_title">Nuevo trabajo en traffic4u</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/02/18/automatizar-el-envio-de-datos-a-un-formulario-con-jquery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Ajax con Jquery</title>
		<link>http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/</link>
		<comments>http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 10:52:49 +0000</pubDate>
		<dc:creator>Emilio</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/?p=2966</guid>
		<description><![CDATA[Cuando empecé con Ajax lo hice con mi propia librería, yo mismo me cree las funciones que iba a utilizar y confieso que siempre me ha ido bien, pero ahora, he dado un paso más en mi camino por aprender y he decidido empezar a utilizar Jquery como framework javascript. De momento, me he resistido [...]]]></description>
				<content:encoded><![CDATA[<p>Cuando <a title="Empezando con Ajax" href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/">empecé con Ajax</a> lo hice con mi propia librería, yo mismo me cree las funciones que iba a utilizar y confieso que siempre me ha ido bien, pero ahora, he dado un paso más en mi camino por aprender y he decidido empezar a utilizar <strong>Jquery como framework javascript</strong>.</p>
<p>De momento, me he resistido a utilizar frameworks para css e incluso aún ando dudando si usar alguno para php, pero lo que si tengo claro, es que voy a usar Jquery.</p>
<h2>Ajax con Jquery</h2>
<p>Sinceramente, esperaba algo más complicado y me ha sorprendido gratamente, tanto su facilidad de uso como lo sencillo que es de modificar.</p>
<p>Para poder utilizar Ajax en Jquery recomiendo leer (<em>aunque sea por encima</em>) la <a href="http://docs.jquery.com/Ajax">API en la página oficial</a><a href="http://docs.jquery.com/Ajax"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a>, allí nos explicarán cómo se hace internamente y cómo se puede usar.</p>
<p>Lo primero que tenemos que tener claro, es que antes de usar Ajax, tenemos que activar Jquery, por lo que la primera instrucción que debería aparecer en nuestra página sería</p>
<pre><code>$(document).ready(function(){
   ....
});</code></pre>
<p>Ahora, una vez inicializado, podemos pasar a utilizar la función Ajax, que llamaremos de la siguiente manera</p>
<pre><code>$.ajax({
   ....
});</code></pre>
<p>Una vez que ya tenemos la llamada a la función que controla Ajax, tendremos que configurarlo mediante una serie de parámetros, tendremos parámetros de <strong>configuración</strong>, como indicar el tipo de datos que vamos a mandar, la página que se cargará, el tipo de transferencia que realizaremos y otra serie de parámetros a los que yo llamo de <strong>estado</strong>, donde podremos realizar acciones, cuando empiece, cuando termine, cuando falle, mientras está enviando datos&#8230;</p>
<p>No voy a poner todos los posibles parámetros, estos están explicados muy bien en la API antes mencionada, así que me limitaré a hacer un par de ejemplos con lo más frecuente.</p>
<h3>Ejemplo para cargar una página estática</h3>
<p>Si queremos cargar una página estática &#8220;<em>prueba.html</em>&#8221; en la capa &#8220;<em>destino</em>&#8221; deberíamos utilizar el siguiente código</p>
<pre><code>$.ajax({
        url: "prueba.html",
        success: function(html){
            $.("#destino").html(html)
        }
});</code></pre>
<p>En este caso le estamos indicando, mediante el parámetro <em>url</em>, la página que se cargará y mediante el estado <em>success</em>, lo que tendrá que ejecutarse cuando la transferencia haya terminado.</p>
<h3>Ejemplo para cargar una página dinámica</h3>
<p>En el caso de que queramos hacer lo mismo pero con páginas dinámicas que puedan recibir parámetros, el código sería así</p>
<pre><code>$.ajax({
        type: "POST",
        url: "alta.php",
        data: "nombre=Jose&amp;id=15",
        success: function(html){
             $.("#destino").html(html)
        }
});</code></pre>
<p>Supongo que no hace falta explicar mucho, la única diferencia es que podemos definir de qué forma se enviarán los datos, post o get y el parámetro que los contendrá, data.</p>
<h2>¿Y si algo falla?</h2>
<p>Si en algún momento el proceso de transmisión falla, tenemos un estado para poder tomar medidas al respecto, es el <em>error</em>.</p>
<pre><code>$.ajax({
        type: "POST",
        url: "alta.php",
        data: "nombre=Jose&amp;id=15",
        success: function(html){
             $.("#destino").html(html)
        },
        error: function(html){
             alert("El proceso ha fallado!");
        }
});</code></pre>
<h2>¿Cómo pongo una imagen para indicar que está funcionando?</h2>
<p>Uno de los grandes problemas de Ajax es que a veces la gente no sabe que la página está trabajando, para ello, una forma de indicarles que no deben preocuparse es poner un gif que indique que la página está trabajando.</p>
<p>¿Cuando se mostrará esta información? pues sencillo, desde que empiece el proceso hasta que se llegue al estado success.</p>
<pre><code>$.ajax({
        type: "POST",
        url: "alta.php",
        data: "nombre=Jose&amp;id=15",
        beforeSend: function(objeto){
	     $('#destino').html("&lt;img src='ruta/loading.gif' alt='Loading...'/&gt;");
        },
        success: function(html){
             $.("#destino").html(html)
        },
        error: function(html){
             alert("El proceso ha fallado!");
        }
});</code></pre>
<p>Con esto ya tendríamos nuestra pequeña función para utilizar Ajax en nuestros proyectos.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2007/05/30/mandar-emails-con-php/" class="wp_rp_title">Mandar emails con php</a></li><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2008/01/06/eliminar-un-directorio-con-php/" class="wp_rp_title">Eliminar un directorio con PHP</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/automatizar-el-envio-de-datos-a-un-formulario-con-jquery/" class="wp_rp_title">Automatizar el envío de datos a un formulario con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/12/ponte-a-prueba-europafm/" class="wp_rp_title">Ponte a prueba, EuropaFM</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Repositorio scripts en Ajax</title>
		<link>http://emilio.aesinformatica.com/2007/11/06/repositorio-scripts-en-ajax/</link>
		<comments>http://emilio.aesinformatica.com/2007/11/06/repositorio-scripts-en-ajax/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 14:25:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/2007/11/06/repositorio-scripts-en-ajax/</guid>
		<description><![CDATA[En Ajax compilation disponen de una colección de scripts totalmente hechos en Ajax que los puedes incorporar a tu sitio web. Art&#237;culo original escrito por Emilio. Todos los art&#237;culos publicados bajo el dominio aesinformatica.com est&#225;n protegidos bajo la Licencia Creative Commons. Ajax con JqueryAjax tiene competenciaMandar emails con phpEncuestas para tu webAutomatizar el envío de [...]]]></description>
				<content:encoded><![CDATA[<p>En <a href="http://www.ajaxcompilation.com/" target="_blank">Ajax compilation</a><a href="http://www.ajaxcompilation.com/" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a> disponen de una colección de scripts totalmente hechos en Ajax que los puedes incorporar a tu sitio web.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/30/mandar-emails-con-php/" class="wp_rp_title">Mandar emails con php</a></li><li ><a href="http://emilio.aesinformatica.com/2009/03/03/encuestas-para-tu-web/" class="wp_rp_title">Encuestas para tu web</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/automatizar-el-envio-de-datos-a-un-formulario-con-jquery/" class="wp_rp_title">Automatizar el envío de datos a un formulario con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/" class="wp_rp_title">Cargar un Servlet con Ajax</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2007/11/06/repositorio-scripts-en-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servidor Ajax para desarrollo de aplicaciones</title>
		<link>http://emilio.aesinformatica.com/2007/10/18/servidor-ajax-para-desarrollo-de-aplicaciones/</link>
		<comments>http://emilio.aesinformatica.com/2007/10/18/servidor-ajax-para-desarrollo-de-aplicaciones/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 07:17:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/2007/10/18/servidor-ajax-para-desarrollo-de-aplicaciones/</guid>
		<description><![CDATA[Desde Somospc, entre otros sitios, nos iforman de la nueva aplicación que Eclipse ha anunciado. Se trata de un servidor Ajax para crear todo tipo de aplicaciones para Internet, de una manera sencilla y cómoda a la altura de cualquiera. Como ventajas podemos destacar que permitirá la creacción de aplicaciones Ajax de una manera más [...]]]></description>
				<content:encoded><![CDATA[<p>Desde <a href="http://www.somospc.com" target="_blank">Somospc</a><a href="http://www.somospc.com" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a>, entre otros sitios, nos iforman de la nueva aplicación que Eclipse ha anunciado. Se trata de un servidor <a href="http://es.wikipedia.org/wiki/AJAX" target="_blank">Ajax</a><a href="http://es.wikipedia.org/wiki/AJAX" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a> para crear todo tipo de aplicaciones para Internet, de una manera sencilla y cómoda a la altura de cualquiera.</p>
<p>Como ventajas podemos destacar que permitirá la creacción de aplicaciones Ajax de una manera más cómoda y facilitando la integración y desarrollo mediante la tecnología RAP <a href="http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/" target="_blank">con Java</a><a href="http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a>.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2008/01/06/eliminar-un-directorio-con-php/" class="wp_rp_title">Eliminar un directorio con PHP</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2007/12/07/cuidado-con-youtube/" class="wp_rp_title">Cuidado con youtube</a></li><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/" class="wp_rp_title">Empezando con Ajax</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2007/10/18/servidor-ajax-para-desarrollo-de-aplicaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cargar un Servlet con Ajax</title>
		<link>http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/</link>
		<comments>http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 07:33:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/</guid>
		<description><![CDATA[La semana pasada escribía un artículo sobre los comienzos con ajax, en él indicaba una forma fácil para cargar un documento estático en cualquier capa de una página. En algún momento hice referencia a poder cargar documentos que contuvieran funciones javascript o incluso servlets. Esto si es posible, pero siempre con algunas recomendaciones para evitar [...]]]></description>
				<content:encoded><![CDATA[<p>La semana pasada escribía un <a href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/" target="_blank">artículo sobre los comienzos con ajax</a><a href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/" target="_blank"><img style='border:0;' src='http://emilio.aesinformatica.com/wp-content/plugins/tensai-rss/external.png'/></a>, en él indicaba una forma fácil para cargar un documento estático en cualquier capa de una página.</p>
<p>En algún momento hice referencia a poder cargar documentos que contuvieran funciones javascript o incluso servlets.</p>
<p>Esto si es posible, pero siempre con algunas recomendaciones para evitar problemas futuros.</p>
<h2><strong>Recomendaciones para evitar problemas.</strong></h2>
<p>Las funciones javascript deberían ser declaradas en la plantilla base, es decir, donde se establecen las diferentes capas, al lado de las funciones ajax y a ser posible (para mejor organización) en ficheros .js externos al documento, así para cualquier cambio será todo mucho más sencillo.</p>
<p>Las direcciones deberíamos (por lo menos al principio) ponerlas absolutas y a medida que vaya funcionando ir cambiándolas por relativas, así cargaremos menos el servidor. En caso de no tener problema de carga las podríamos dejar como absolutas.</p>
<p>Cuando carguemos una página en una capa, si esta llama a alguna función ya estará declarada en la plantilla base y no habrá ningún problema de ejecución.</p>
<h2><strong>Cómo cargar un servlet en una capa con Ajax</strong></h2>
<p>La sintaxis sería la misma que con una página normal, nosotros llamaríamos a nuestra función cargar página y le pasaríamos la dirección del servlet (http://localhost:8080/Prueba/ServletPrueba?accion=1)  tal cual la usaríamos para acceder normal.</p>
<p>Ahora, el servlet se ejecutará y la salida, por ejemplo, si redirecciona a un .jsp aparecerá en la capa.</p>
<p>La única modificación que tendremos que hacer será modificar los enlaces generados dentro del servlet para que se vuelvan a cargar dentro de la capa, al igual que llamamos al servlet, hacer las demás llamadas.</p>
<p>Recordad que si en algún momento tenemos que ejecutar varias instrucciones javascript a la vez podemos usar un sólo evento, por ejemplo, el onLoad y separarlas con &#8220;;&#8221;</p>
<pre><code>onLoad(javascrip1();javascrip2())</code></pre>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2007/06/26/servicios-web-en-java-ii/" class="wp_rp_title">Servicios Web en Java II</a></li><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2009/04/28/comparar-arrays-en-php/" class="wp_rp_title">Comparar arrays en PHP</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/" class="wp_rp_title">Empezando con Ajax</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Empezando con Ajax</title>
		<link>http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/</link>
		<comments>http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 12:38:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/</guid>
		<description><![CDATA[Por razones del trabajo he tenido que empezar a usar Ajax, antes había hecho algunas cosillas así que he tirado de lo que tenía por ahí. En concreto se trata de una función a la que pasándole una capa y una dirección url (html, php, jsp, servlet&#8230;) carga la página en dicha capa. function paginas [...]]]></description>
				<content:encoded><![CDATA[<p>Por razones del trabajo he tenido que empezar a usar Ajax, antes había hecho algunas cosillas así que he tirado de lo que tenía por ahí.</p>
<p>En concreto se trata de una función a la que pasándole una capa y una dirección url (html, php, jsp, servlet&#8230;) carga la página en dicha capa.</p>
<pre><code>function paginas (url, id_contenedor)
{
var pagina_requerida = false;
if (window.XMLHttpRequest)
{
// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest ();
} else if (window.ActiveXObject)
{
// pero si es IE
try
{
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (e)
{
// en caso que sea una versión antigua
try
{
pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
else
return false;
pagina_requerida.onreadystatechange = function ()
{
// función de respuesta
cargarpagina (pagina_requerida, id_contenedor);
}
pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
pagina_requerida.send (null);
}</code></pre>
<p>Si todo ha funcionado correctamente entonces cargaremos el contenido en la capa correspondiente</p>
<pre><code>function cargarpagina (pagina_requerida, id_contenedor)
{
if (pagina_requerida.readyState == 4 &amp;&amp; (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
}</code></pre>
<p>Me encantaría poder decir de donde obtuve estas funciones, pero no sé el autor ni el tipo de licencia que tienen, pero vamos, que tampoco tienen mucho, cualquiera con mínimos conocimientos de ajax podría hacerlas e incluso mejorarlas ya que son muy básicas.</p>
<p>Las podemos incluir en un fichero javascript externo o integrarlas en nuestro código, de cualquier manera para poder invocar la función sería desde cualquier evento con la sintaxis:</p>
<pre><code>paginas('url','capa_destino')</code></pre>
<p>Donde la url puede ser tanto absoluta como relativa y la capa_destino ha de ser el id de alguna capa, por ejemplo:</p>
<pre><code>paginas('prueba.html','cprueba')</code></pre>
<p>y tendríamos en nuestro código:</p>
<pre><code>&lt;div id="cprueba"&gt;&lt;/div&gt;</code></pre>
<p>Luego cargaríamos la página prueba.html en la capa &#8220;codigo&#8221; ubicada mediante css en cualquier parte de nuestra página.</p>
<p>Para poder invocarla podemos usar eventos onChange o onLoad, por ejemplo, si queremos que nada más cargar la página aparezca algo podemos usar la propiedad onLoad del body:</p>
<pre><code>&lt;body onLoad="paginas('prueba.html','cprueba')"&gt;</code></pre>
<p>Es conveniente cargar sólo páginas con texto y evitar transferir mediante Ajax funciones javascript ya que suelen dar muchos problemas y fallos.</p>
<p>Si se pretende llamar a un servlet y este redirige a un jsp, por ejemplo, también tendremos ese problema ya que se recargará toda la página y no sólo la capa.</p>
<p>En estos casos quizás sea mejor solución utilizar frames con la estructura de marco flotante</p>
<pre><code>&lt;iframe name = "nombre" width="100%" height="400"  frameborder="0"&gt;Texto alternativo&lt;/iframe&gt;</code></pre>
<p>Con el frameborder indicaremos si aparece el borde o si por  el contrario queremos hacer transparente su presencia.</p>
<p>Para enviar enlaces al frame sólo necesitaremos utilizar el atributo target del enlace para indicar que frame (name), en este caso sería:</p>
<pre><code>&lt;a target= "nombre" href=""&gt;Enlace&lt;/a&gt;</code></pre>
<p>Espero que os sirva para vuestros comienzos con Ajax.</p>
<div><hr><small>Art&iacute;culo original escrito por <a href="http://emilio.aesinformatica.com">Emilio</a>.<br/>
Todos los art&iacute;culos publicados bajo el dominio aesinformatica.com est&aacute;n protegidos bajo la <a href="http://emilio.aesinformatica.com/licencia/">Licencia Creative Commons</a>. </small> </div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://emilio.aesinformatica.com/2008/08/28/mostrar-y-ocultar-informacion-en-una-capa-al-pasar-el-raton/" class="wp_rp_title">Mostrar y ocultar información en una capa al pasar el ratón</a></li><li ><a href="http://emilio.aesinformatica.com/2009/02/18/ajax-con-jquery/" class="wp_rp_title">Ajax con Jquery</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/09/ajax-tiene-competencia/" class="wp_rp_title">Ajax tiene competencia</a></li><li ><a href="http://emilio.aesinformatica.com/2007/05/30/mandar-emails-con-php/" class="wp_rp_title">Mandar emails con php</a></li><li ><a href="http://emilio.aesinformatica.com/2008/01/06/eliminar-un-directorio-con-php/" class="wp_rp_title">Eliminar un directorio con PHP</a></li><li ><a href="http://emilio.aesinformatica.com/2007/10/15/cargar-un-servlet-con-ajax/" class="wp_rp_title">Cargar un Servlet con Ajax</a></li></ul></div></div>
]]></content:encoded>
			<wfw:commentRss>http://emilio.aesinformatica.com/2007/10/10/empezando-con-ajax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
