<?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>e-moises &#187; ajax</title>
	<atom:link href="http://www.moisessouto.com.br/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.moisessouto.com.br</link>
	<description>by Moisés Souto</description>
	<lastBuildDate>Mon, 23 Aug 2010 21:07:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Web 2.0: Muito além do ajax (códigos apresentados durante a palestra)</title>
		<link>http://www.moisessouto.com.br/2007/11/21/web-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra/</link>
		<comments>http://www.moisessouto.com.br/2007/11/21/web-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 01:14:43 +0000</pubDate>
		<dc:creator>Moisés Souto</dc:creator>
				<category><![CDATA[PSL]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[software livre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.moisessouto.com.br/?p=55</guid>
		<description><![CDATA[Bom, estou devendo as pessoas que assistiram minha palestra no III EPSL os códigos que utilizei. Pessoa desculpas pela demora, é que as semanas que se seguiram após o EPSL foram de correria extrema. Primeiro vamos as funções que utilizei &#8230; <a href="http://www.moisessouto.com.br/2007/11/21/web-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bom, estou devendo as pessoas que assistiram minha palestra no <a href="http://rn.softwarelivre.org/portal/">III EPSL</a> os códigos que utilizei. Pessoa desculpas pela demora, é que as semanas que se seguiram após o EPSL foram de correria extrema.</p>
<p>Primeiro vamos as funções que utilizei para utilizar o ajax, aconselho que elas estejam em um arquivo separado e o incluam em suas páginas, estas são funções em JavaScript.</p>
<blockquote>
<ol>
<li>//  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;  FUNÇÕES DO AJAX &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</li>
<li>//Fila de conexões</li>
<li>fila=[]</li>
<li>ifila=0</li>
<li>function ajaxPOSTRun(url,parameters){</li>
<li></li>
<li>xmlhttp.onreadystatechange = alertContents;</li>
<li>xmlhttp.open(&#8216;POST&#8217;, url, true);</li>
<li>xmlhttp.setRequestHeader(&#8220;Content-type&#8221;, &#8220;application/x-www-form-urlencoded&#8221;);</li>
<li>xmlhttp.setRequestHeader(&#8220;Content-length&#8221;, parameters.length);</li>
<li>xmlhttp.setRequestHeader(&#8220;Connection&#8221;, &#8220;close&#8221;);</li>
<li>xmlhttp.send(parameters);</li>
<li></li>
<li>}</li>
<li>function ajaxHTML(id,url,carr){</li>
<li>//Carregando&#8230;</li>
<li>if (typeof carr == &#8220;undefined&#8221;)</li>
<li>document.getElementById(id).innerHTML=&#8221;Carregando&#8230;&#8221;;</li>
<li>//Adiciona à fila</li>
<li>fila[fila.length]=[id,url]</li>
<li>//Se não há conexões pendentes, executa</li>
<li>if((ifila+1)==fila.length)ajaxRun()</li>
<li>}</li>
<li></li>
<li></li>
<li>//Executa a próxima conexão da fila</li>
<li>function ajaxRun(){</li>
<li>//Abre a conexão</li>
<li>xmlhttp.open(&#8220;GET&#8221;,fila[ifila][1],true);</li>
<li>//Função para tratamento do retorno</li>
<li>xmlhttp.onreadystatechange=function() {</li>
<li>if (xmlhttp.readyState==4){</li>
<li>//Mostra o HTML recebido</li>
<li>retorno=unescape(xmlhttp.responseText.replace(/\+/g,&#8221; &#8220;))</li>
<li>//retorno=xmlhttp.responseText</li>
<li>document.getElementById(fila[ifila][0]).innerHTML=retorno</li>
<li>//Roda o próximo</li>
<li>ifila++</li>
<li>if(ifila</li>
<li>if(document.getElementById(&#8216;calendario&#8217;)){</li>
<li>var myTips = new Tips($$(&#8216;#calendario .agenda_data_marcada&#8217;),{maxTitleChars:200,onShow:function(x){x.setOpacity(0.9)}});</li>
<li>$$(&#8220;.tool-tip&#8221;).each(function(x){</li>
<li>x.setStyle(&#8220;visibility&#8221;,&#8221;hidden&#8221;);</li>
<li>});</li>
<li>}</li>
<li>}</li>
<li>}</li>
<li>//Executa</li>
<li>xmlhttp.send(null)</li>
<li>}</li>
<li></li>
<li>//Tenta criar o objeto xmlHTTP</li>
<li>try{</li>
<li>xmlhttp = new XMLHttpRequest();</li>
<li>}catch(ee){</li>
<li>try{</li>
<li>xmlhttp = new ActiveXObject(&#8220;Msxml2.XMLHTTP&#8221;);</li>
<li>}catch(e){</li>
<li>try{</li>
<li>xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);</li>
<li>}catch(E){</li>
<li>xmlhttp = false;</li>
<li>}</li>
<li>}</li>
<li>}</li>
</ol>
</blockquote>
<p>Pronto, estas são as funções genéricas para utilizar o ajax, e que abstraem o trabalho o tornando mais simples. Vamos agora criar a função javascript que vai chamar a função ajaxHTML dessas nossas funções. Utilizar essa abstração é muito simples como veremos.</p>
<p>Na página onde queremos que o evento aconteça colocaremos a seguinte função javascript, no exemplo que tratei na palestra é um sistema de acompanhamento de obras de uma construtora, o &#8220;ajax&#8221; serve para tornar a aplicação mais leve, rápida e interessante ao usuário. Temos uma obra e vinculada a esta  temos etapas da construção, cada etapa pode conter diversos álbuns, como seriam muitas miniaturas, e conseqüentemente um temo de espera maior,  resolvi implementar o ajax para maximizar a experiência do usuário, como disse anteriormente.</p>
<p>Temos 2 funções uma que chama o &#8220;ajax&#8221; para fazer a requisição das etapas da construção que temos cadastradas no banco para obra, cujo o id passei como parâmetro na função, chamei essa função de <strong>CarregarAlbuns(id_obra)</strong>, onde passo o id da obra e o &#8220;ajax&#8221; chama a página de apoio que contém o select no banco para retornar os álbuns associados aquela obra. Segue a função:</p>
<blockquote>
<ol>
<li>function {</li>
<li>axHTML(&#8220;div_album&#8221;,&#8217;albuns.php?id_obra=&#8217;+id_obra);</li>
<li>};</li>
</ol>
</blockquote>
<p>Para chamar a função passamos 3 parâmetros necessários e 1 extra para chamar uma imagem enquanto o ajax carrega as informações. Primeiro parâmetro é a div onde desejamos que o ajax atue, em nosso exemplo utilizaremos a <strong>div_album,</strong> que deve estar no código porém vazia (o ajax a preencherá futuramente ). O segundo parâmetro é a pagina de apoio que terá a ação para preencher a div que setamos no primeiro parâmetro (no nosso caso a <strong>div_album</strong>), em nosso exemplo chamamos a página <strong>albuns.php?id_obra=&#8221;" </strong>que contém um select para achar os albuns associados a obra, cujo o id passamos por get para a págian albuns.php. O que for &#8220;ecoado&#8221; (usando a função echo do PHP) nessa página (albuns.php), será escrito dentro da <strong>div_album</strong> quando a função <strong>CarregarAlbuns(id_obra) </strong>for chamada, em nosso exemplo chamamos tal função utilizando o evento <strong>onclick</strong> no link <strong>Ver Fotos da obra</strong>. OBS: $_db é onde estão dados buscados no banco. As tags estão cortados para pode serem reproduzidas corretamente, lembrem de corrigir.</p>
<blockquote>
<ol>
<li><a onclick="CarregarAlbuns(<?=$_db['id_obra']?>);return false;&#8221;><strong>.p>a xhref=&#8221;" mce_href=&#8221;"      onclick=&#8221;CarregarAlbuns(php= $_db['id_obra']);&#8221;>Ver fotos da obra&#8230;/a>/p></strong></a></li>
</ol>
</blockquote>
<p>Então a div será preenchida com conteúdo, movendo o conteúdo colocado depois do fim da <strong>div_album </strong>para baixo, o que dará a impressão de movimento.</p>
<p align="center"><img alt="2.jpg" id="image57" src="http://www.moisessouto.com.br/wp-content/uploads/2007/11/2.jpg" /></p>
<p align="left">Logo depois de termos carregado a listagem dos álbuns que temos, queremos agora listar as imagens que temos para aquele álbum, então devemos acrescentar uma função junto a função anterior (<strong>CarregarAlbuns(id_obra)</strong>) chamada <strong>CarregarFotos(id_album)</strong>:</p>
<blockquote>
<ol>
<li>function CarregarFotos(id_album){</li>
<li>ajaxHTML(&#8220;div_fotos&#8221;,&#8217;fotos.php?id_album=&#8217;+id_album);</li>
<li>};</li>
</ol>
</blockquote>
<p>Ao carregarmos as etapas temos o link para cada álbum, que através do evento<strong> onclick </strong>chamamos a função que criamos, esse caso é similar a anterior, me refiro aos parâmetros da função o que muda é que a <strong>div_fotos  </strong>que é onde escreveremos as fotos usando ajax (da mesma maneira como foi feito na função anterior), a div vazia deve estar contida dentro da página de apoio anterior, exatamente após o título da etapa de construção.</p>
<p align="left">
<p align="center"><img alt="3.jpg" id="image58" src="http://www.moisessouto.com.br/wp-content/uploads/2007/11/3.jpg" /></p>
<p align="left">No final de tudo podemos incrementar a aplicação utilizando o <a href="http://www.digitalia.be/software/slimbox">Slimbox </a></p>
<p align="center"><img alt="4.jpg" id="image59" src="http://www.moisessouto.com.br/wp-content/uploads/2007/11/4.jpg" /></p>
<p align="left">Você pode encontrar os slides da palestra em PDF no link <a href="http://www.moisessouto.com.br/?page_id=23"><strong>palestras</strong></a> no menu acima.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F&amp;title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F&amp;title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F&amp;title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F&amp;headline=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;u=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F&amp;title=Web+2.0%3A+Muito+al%C3%A9m+do+ajax+%28c%C3%B3digos+apresentados+durante+a+palestra%29&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fwww.moisessouto.com.br%2F2007%2F11%2F21%2Fweb-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra%2F" ><img class="lightsocial_img" src="http://www.moisessouto.com.br/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.moisessouto.com.br/2007/11/21/web-20-muito-alem-do-ajax-codigos-apresentados-durante-a-palestra/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
