Ajax simples
Warning: Isso deve ser muito manjado, eu que nunca tinha visto. Estou escrevendo só para não esquecer
Imagine o seguinte caso de uma aplicação web: o usuário executa uma ação e o servidor apenas precisa ser notificado, todos os dados necessários para uma eventual alteração da tela já estão presentes. É o caso por exemplo de marcar um item (star-it), votar em um sistema de ratings, adicionar uma tag a um item, e por aí vai.
Podemos fazer da seguinte maneira: um link que o usuário vai clicar para executar uma ação:
<a id=’a_theid’ onclick=“return ajax(this)” href=“/action?user=x&a=y”>
Nesse link, no campo id colocamos uma codificação simples de um eventual objeto a ser alterado, nesse caso usamos a_theid, onde deve um existir um objeto na página com o id theid que poderá ser alterado. A URL que fará a notificação da execução no server esta no href. Dessa forma podemos implementar a função JavaScript ajax assim:
function ajax(node) { var v = node.id.split(/_/); // a_theid var item = v[1]; // theid // Executa a alteração de tela document.getElementById(item).innerHTML = … // notifica o servidor var action = new Image(); action.src = node.href; return false; }
O browser carrega imagens de forma assíncrona, então essa função não bloca, a alteração na tela é feita na hora e o server é notificado. A vantagem é que isso funciona em qualquer browser, mesmo alguns bem velhos.
Bom, a desvantagem é que você não sabe se o request falhou. Mas isso pode acontecer em poucos casos como:
- O servidor está fora do ar: assim o usuário não conseguirá continuar navegando no sistema por muito tempo sem perceber isso, e o número de usuários que acessou o sistema antes dele cair e tem como executar umas ações que vão falhar (sem ele saber) é reduzido. E nessa caso o que você ia fazer? Cuspir um
alertna cara do usuário com “Ooops, We did it again!“? - Existe um problema de rede entre a máquina do usuário e o servidor: isso recai no problema acima, tem o mesmo efeito.
- O servidor está se comportando de maneira inesperada, gerando erros: aí amigo, o AJAX é o menor dos seus problemas.
Bom, eu vi isso no código do YCombinator News (Hacker News). Dá uma olhada lá para ver isso funcionando. Já o Digg e o Reddit usam Prototype. Alias, o Reddit poderia usar isso, pois eles não passam uma função de callback no caso de erro do Ajax.Request. Já o Digg passa uma função com um alert “ERROR: …”
| Enviar por e-mail | Hits para esta publicação: 1236
3 respostas para “ Ajax simples ”
Deixe uma resposta.
Essa é a técnica usada para gravar os dados do Google Analytics
Yep, acabei de ver o código do http://www.google-analytics.com/urchin.js
Sabia que era manjado
[…] Ajax Simples (tags: blog.lucindo.com.br 2007 mes9 dia16 at_tecp blog_post ajax image javascript) […]