Ajax: Fácil e Eficiente com Prototype

Prototype

Antes de mais nada, gostaria de dizer que eu sou um fã assumido do framework prototype em prol de um código mais limpo e mais eficiênte sem recorrer a filas de requisição entre outros, e ainda pelo tamanho no framework que é baseado em alguns kb´s.

Um dos grandes atrativos do prototype é a forma como ele lida com as situações envolvendo Ajax, por partes vamos ao que interessa:
Leia o resto deste post »


GET ou POST?

Uma das maiores duvidas ao utilizarmos o objeto XMLHTTPRequest é: Qual a diferença entre os metodos GET e POST e quando usar um ou outro?

Em Teoria, o método GET deve ser usado quando a solicitação for idempotente, ou seja, varias solicitações retornarão o mesmo resultado. Na prática, se o método correspondente do servidor mudar o estado de alguma forma, provavelmente isso não ocorrerá. E esse é o padrão. A diferença mais pratica se da em termos do tamanho da carga – em muitos casos, os navegadores e servidores limitarão o tamanho do URL usado para enviar dados para o servidor; em outras palavras, evite mudar o estado do servidor com uma chamada GET.

Em geral, use o método POST sempre que estiver alterando o estado do servidor. Diferente de GET, você terá que configurar o cabeçalho Content-Type do objeto XMLHTTPRequest desta forma:

xmlHttp.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);

Diferente do que ocorre com GET, o POST não restringe o tamanho da carga que é enviada para o servidor e não há garantias de que as solicitações POST serão idempotentes.

Provavelmente a maioria das solicitações que você criará serão solicitações GET; no entanto, existe POST para o caso de você precisar usá-lo.

http://www.couto.zuntto.com


Ajax Seguro ? hmm, eita ?

aSSL

Além das famosas funções “Anti Injection” feitas provavelmente por gonsalves (ou algum autor anonimo), uma nova funcionalidade foi criada em cima da ideologia “AJAX”, o aSSL que como diz o autor veio para reforçar a segurança trazendo uma simulação do protocolo de segurança SSL, a idéia é a mesma.

Acho que vale a pena da uma estudada nessa biblioteca (já que é modularizada para PHP também) pois com o crescimento do AJAX + Comércio Eletrônico, esse sistema vira uma espécie de apoio a mais na luta (“luta ?”) contra os carders.

Artigo Interessante sobre o aSSL e/ou Site Oficial


Ajax – Botão de Voltar

Ajax

Estava vagando pela web no meu horário de almoço, e encontrei uma funcionalidade muito útil.

Fazer botão de voltar do browser funcionar em Ajax.

Pelo que disse o autor do artigo (Bernardo Rufino) ele pego uns códigos com a mesma ideologia e simplifico.

Clique Aqui para ler o artigo inteiro entra no link

Os código necessários e o que mais importa que é o baguio funcionando clique aqui.


AJAX Framework

AJAX Framework

SPRY – AJAX Framework (ehhhhh da Adobe)

Navegando agora a pouco me deparei com outro produto da Adobe e quando fui ler a descrição, ploft, framework pra ajax, e eles ainda mostram uns exemplos do tipo “impressione seus colegas”, então ta ae a descrição : (quem não curti pega ae _/_ )

“The Spry framework for Ajax is a JavaScript library for web designers that provides functionality that allows designers to build pages that provide a richer experience for their users. It is designed to bring Ajax to the web design community who can benefit from Ajax, but are not well served by other frameworks. “

Link Original : http://labs.adobe.com/technologies/spry/

Exemplo 1 (Efeitos Lokos) : http://labs.adobe.com/technologies/spry/demos/effects/

Exemplo 2 (Galeria de Fotos) : http://labs.adobe.com/technologies/spry/demos/gallery/

Exemplo 3 (Listagem Produtos) : http://labs.adobe.com/technologies/spry/demos/products/

Exemplo 4 (Leitor RSS): http://labs.adobe.com/technologies/spry/demos/rssreader/


Contruindo uma fila de requisições em Ajax

Olá pessoal,

Estou passando um passo a passo de como se criar uma fila de requisições e Ajax, pois como eu acredito que vcs já saibam, se vc fizer muitiplas requisições no Ajax ao mesmo tempo com o mesmo objeto Xmlhttprequest da merda….

Abaixo vai um trecho do artigo do Elcio Ferreira sobre o assunto

****************************

Para começar criamos nossa fila de conexões, um Array, e uma variável com o índice do elemento da fila que vai ser executado:

//Fila de conexões
fila=[]
ifila=0

Agora nossa função ajaxHTML deve apenas exibir o “Carregando …”, inserir os parâmetros que ela recebe na fila e testar se a fila está em execução. Se não estiver, executa o elemento atual da fila. Fica assim:

//Carrega via XMLHTTP a url recebida e coloca seu valor
//no objeto com o id recebido
function ajaxHTML(id,url){
    //Carregando...
    document.getElementById(id).innerHTML="<span class='carregando'>"+
                                          "Carregando...</span>"
    //Adiciona à fila
    fila[fila.length]=[id,url]
    //Se não há conexões pendentes, executa
    if((ifila+1)==fila.length)ajaxRun()
}

Note a chamada à função ajaxRun. Ela vai ficar bem parecida com nossa ajaxHTML do passo anterior. Basicamente, vai criar a conexão e executá-la, com uma onreadystatechange que faz duas coisas: coloca o HTML recebido no objeto HTML e testa se há conexões na fila esperando execução, se houver, executa a próxima:

//Executa a próxima conexão da fila
function ajaxRun(){
    //Abre a conexão
    xmlhttp.open("GET",fila[ifila][1],true);
    //Função para tratamento do retorno
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //Mostra o HTML recebido
            retorno=unescape(xmlhttp.responseText.replace(/+/g," "))
            document.getElementById(fila[ifila][0]).innerHTML=retorno
            //Roda o próximo
            ifila++
            if(ifila<fila.length)setTimeout("ajaxRun()",20)
        }
    }
    //Executa
    xmlhttp.send(null)
}

Você pode ver o código completo no arquivo ajaxutil.js. Foi construído para que possa ser reaproveitado em qualquer projeto. Veja como o ajax.js ficou. Exatamento igual ao do primeiro artigo, exceto toda a chamada ao XMLHttpRequest, que foi substituída por:

//Carrega o HTML
ajaxHTML("titulo","funcoes.php?h="+n)
ajaxHTML("conteudo","funcoes.php?n="+n)

Se tivéssemos que carregar mais regiões, bastaria acrescentar linhas aqui.

****************************

Se quiserem ver o artigo na integra esta em http://www.tableless.com.br/artigos/ajaxdemo2/


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.