Desmistificando o AJAX – Parte VI

Raphael Paiva

raphael@sena.com.br

 

Conclusão

No nosso caso, demonstramos um exemplo bem simples, porém capaz de apresentar a ‘ponta do iceberg‘ do desenvolvimento Web com AJAX.

 

A popularização do AJAX ajudou e muito no nascimento de novos termos, como a Web 2.0 [ra funcionalidade p[ontes estç(http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html), uma quase renascença da Internet, desta vez, liderada pelo Google; e foi justamente o Google onde tivemos a primeira aplicação com alta popularidade que utilizou o AJAX, o GMail.

 

O mais interessante é que AJAX não é novo! Já era utilizado por inúmeros desenvolvedores mundo afora, porém, com a criação do acrônimo para referenciá-lo a Javascript, XML e chamadas assíncronas, popularizou-se em poucas semanas; o artigo que “batizou” a “velha” tecnologia não muito difundida foi escrito por Jesse James Garret no site da Adaptive Path (http://www.adaptivepath.com/publications/essays/archives/000385.php), onde me serviu de primeira base de estudos (e onde “colei” as duas figuras sobre o modelo assíncrono e a arquitetura do AJAX).

 

Após a leitura do artigo, me interessei e fui atrás de novas fontes, principalmente com exemplos, e onde eu fiz meu primeiro test-drive foi no catálogo de BluePrints do Java.net (https://bpcatalog.dev.java.net/nonav/ajax/). A partir daí, e até hoje, estou pesquisando mais sobre o assunto aos poucos. A maior e melhor fonte que posso indicar é a wikipedia (http://en.wikipedia.org/wiki/AJAX) com inúmeros artigos, frameworks, exemplos, scripts e histórico sobre o tema.

 

Pessoalmente ainda não utilizo nenhum framework que implemente AJAX, pois normalmente estes são voltados para a camada visual da aplicação, e ainda não tive oportunidade (ou necessidade) de utilizar algo semelhante, porém, acho que um dia eu chegue a utilizar algum; caso se interesse por algum framework, listei alguns que li no início do capítulo 6, vale a pena escolher algum para estudar e usar. Pretendo que meu próximo artigo/tutorial sobre AJAX seja um comparativo entre estes frameworks ou algo semelhante a isto (qualquer idéia, pode entrar em contato comigo J).

 

Durante o tutorial não cheguei a comentar em detalhes os métodos do objeto XMLHttpRequest para que ficasse algo mais direto à prática, já que falei razoavelmente sobre a teoria por detrás; assim, no apêndice a seguir, organizei os principais métodos e suas funções.

 

Apêndice

 

CRIANDO UM OBJETO

FORMA

BROWSER

var req = new XMLHttpRequest();

Mozilla e outros

var req = new ActiveXObject("Microsoft.XMLHTTP");

Internet Explorer

var req = new ActiveXObject("Msxml2.XMLHTTP");

Internet Explorer

MÉTODOS DO OBJETO

MÉTODO

FUNÇÃO

abort()

Cancela a atual requisição

getAllResponseHeaders()

Retorna a coleção de cabeçalhos do http como uma String

getResponseHeader("campoCabecalho")

Retorna o valor do campo do cabeçalho

open("metodo","URL",assincrono)

Especifica o método, a URL e outros atributos opcionais de uma requisição.

O parâmetro “método” pode ser GET, POST ou PUT.

O parâmetro URL pode ser uma url relativa ou completa.

O  parâmetro assíncrono informa se a requisição será assíncrona ou síncrona: true significa que o script continuará após a execução do método send; false significa que o script ficará esperando a resposta do servidor no método send.

send(conteudo)

Envia a requisição

setRequestHeader("campo","valor")

Adiciona um par (campo/valor) ao cabeçalho http a ser enviado

PROPRIEDADES DO OBJETO

PROPRIEDADE

DESCRIÇÃO

onreadystatechange

Indica o evento a ser chamado cada vez que o estado do objeto muda.

readyState

Informa o estado do objeto da requisição:

0 = objeto não inicializado
1 = carregando
2 = carregado
3 = interagindo
4 = completado

responseText

Retorna a resposta como uma string

responseXML

Retorna a resposta como um XML (que pode ser tratada como um W3C DOM)

status

Retorna o estado da requisição como um número (ex: 404 para “não encontrado” e 200 para “OK”)

statusText

Retorna o estado da requisição como uma string (ex: “Não encontrado” ou “OK”)