Ajax: Classe para múltiplas requisições assíncronas
Maio 26, 2009
Ainda vejo muitos desenvolvedores tentando fazer duas requisições Ajax ao mesmo tempo e sofrendo muito com os problemas que isso pode causar. Lembrando que ao fazer a segunda requisição (junto com a primeira) você está simplesmente anulando a anterior. Outra opção é a criação de diversas instâncias de XMLHttpRequest, mas também não é viável devido a incompatibilidade e sobrecarregamento do browser.
Recentemente desenvolvi uma classe Ajax que suporta múltiplas requisições utilizando o conceito de fila e venho aqui compartilhar com vocês.
É uma classe simples responsável por encapsular toda a complexidade do Ajax (não que Ajax seja difícil, pelo contrário Ajax é muito fácil desde que seja utilizado corretamente).
Utilizando o padrão Singleton (lembrando que esse padrão não é 100% seguro em JavaScript) criamos uma única instância do objeto XMLHttpRequest para ser usado em todas as requisições.
Código de classe:
Clique aqui para ver
Modo de usar:
1 Ajax.doPost(“teste.php“, “param=1¶m=2″, function()
2 {
3 if (Ajax.getInstance().readyState == 4)
4 {
5 if (Ajax.getInstance().status == 200)
6 {
7 alert(Ajax.getInstance().responseText);
8 }
9 Ajax.next();
10 }
11 });
Código de exemplo:
Clique aqui para ver
Basta chamar o método Ajax.doPost() para executar uma nova requisição sem se importar se a requisição anterior foi concluída ou não, pois o próximo doPost() somente será executado se a requisição anterior foi concluída.