
Muitos desenvolvedores, até os menos antenados, já ouviram falar de AJAX. Só para relembrar, AJAX é a abreviação em língua inglesa de Asynchronous Javascript And XML e consiste numa técnica de programação para atualizar os dados em uma página de forma assíncrona, ou seja, sem recarregar o documento inteiro. Esta técnica é muito poderosa e, quando usada com planejamento e pertinência, pode tornar a interação bastante agradável.
Os dois alicerces principais que tornaram possível o surgimento e consolidação do AJAX como técnica são:
Nas aplicações que usam AJAX, a interação acontece, na maioria das vezes, utilizando-se um módulo estático ou dinâmico que retorna um pedaço de HTML/XML baseado numa requisição do objeto XMLHttpRequest. Esse pedaço de HTML/XML é então inserido na página via DOM em um contâiner pré-definido.
Imaginemos então que, além de simplesmente preencher um contâiner com HTML/XML, fosse necessária a execução de um javascript que fosse baseado na resposta do módulo dinâmico. A solução mais simples e imediata talvez fosse: "vamos acrescentar uma tag script, preenchê-la com os parâmetros e funções de que necessitamos e mandar tudo como resposta à requisição AJAX ". Isso poderia até funcionar, mas, dessa forma, estaríamos inserindo tags script no meio do código que, além de ser deselegante, é contra os padrões do W3C. Então, o que fazer? Uma solução bastante interessante nesses casos é criar um módulo dinâmico que, em vez de retornar HTML/XML, envie uma resposta usando JSON.
Para quem ainda não ouviu falar, JSON é o acrônimo de JavaScript Object Notation, em outras palavras, é uma representação textual (string) de um objeto javascript. Para ilustrar, vamos mostrar como se pareceria uma resposta JSON:
{"html":"<span>O dólar para 02/01/2007 - 08:30 está cotado em <strong>R$ 2,16</strong> para compra e <strong>R$ 2,15</strong> para venda.</span>","js":"atualizarGraficoCotacao('2.16','2.15','02/01/2007 - 08:30')"}
Esse exemplo mostra um módulo de cotação financeira que além de retornar HTML/XML com a informação textual ainda retorna um javascript com uma função a ser executada para atualizar um gráfico que existe na página. Vamos detalhar um pouco mais como isso funciona na prática, mostrando o processo de desenvolvimento passo-a-passo:
{"html":"<span>O dólar para 02/01/2007 - 08:30 está cotado em <strong>R$ 2,16</strong> para compra e <strong>R$ 2,15</strong> para venda.</span>","js":"atualizarGraficoCotacao('2.16','2.15','02/01/2007 - 08:30')"} eval('var objJson='+objAjax.responseText+'')container.innerHTML=objJson.html;eval(objJson.js);atualizarGraficoCotacao. Para que tudo funcione corretamente, essa função deve estar declarada na página ou em algum javascript ligado a ela.Podemos observar, com esse simples exemplo, como a combinação AJAX+JSON pode ser utilizada de forma bastante consistente de modo a expandir as possibilidades do AJAX. Dependendo das necessidades do projeto, o objeto JSON pode ganhar novos elementos e um grau de complexidade ainda maior proporcionando versatilidade através de múltiplas interações não-restritas apenas a um contâiner e a um retorno em simples HTML/XML.
Vale a pena experimentar!!!
(1) W3C - World Wide Web Consortium - órgão que regulamenta os padrões web.
(2) DOM - Document Object Model - determina como se relacionam os elementos (nós) em uma estrutura XML.