Barra de Progresso com AJAX

Canal: JavaScript  |  Autor: Jonathan Lamim Antunes  |  Publicado em: 27/04/2009  |  Views: 3.082

Uma das necessidades que nos deparamos na hora de realizar projetos longos na web é indicar ao usuário o quanto é preciso esperar. Às vezes é bastante complicado criar um barra de progresso que mostre o estado atual do processo de está sendo executado.

Uma forma de realizar essa tarefa é usando AJAX. Fazemos uma chamada AJAX que executa a ação, e quando o objeto AJAX tem o estado LOADING (readyState == 3), podemos obter a resposta do script chamado e passá-lo para mostrar o percentual da ação que está sendo realizada.

Para isso, desenvolveremos um script (res.php, por exemplo) que devolva a porcentagem seguida por um hífen. Por exemplo, quando passa por 1% será retornado pelo script "1-", cuando passar por 5% será retornado "1-2-3-4-5". Processando isso podemos saber, através do último número, o percentual já processado.

O PHP seria o seguinte:

for($i=0; $i%3C10000000; $i++) {
if ($i%10000 == 0) echo ((int) $i/100000)."-";
flush();
}

E o JavaScript seria assim:

function ajaxobj() { 
try { 
_ajaxobj = new ActiveXObject("Msxml2.XMLHTTP"); 
} catch (e) { 
try { 
_ajaxobj = new ActiveXObject("Microsoft.XMLHTTP"); 
} catch (E) { 
_ajaxobj = false; 



if (!_ajaxobj && typeof XMLHttpRequest!="undefined") { 
_ajaxobj = new XMLHttpRequest(); 


return _ajaxobj; 
}
function prueba () { 
ajax = ajaxobj(); 
ajax.open("GET", "res.php", true); 
ajax.onreadystatechange=function() {
if (ajax.readyState == 3) { 

// Mostramos o percentual
var res = ajax.responseText;
res = res.split("-"); 
alert(res[res.length-2]); 
} else if (ajax.readyState == 4) { 

// Fim
alert("FIM"); 



// Enviamos algo para que o processo funcione
ajax.send(null); 


Como não existe nada perfeito, e menos ainda o Internet Explorer, esse script só funcionou no Firefox, Opera, Safari e
Chrome.

Creative Commons Esta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra. Você não pode criar obras derivadas.
Vote no artigo:
NR. DE VOTO(S): [2]

Compartilhe:

[x] Fechar Preencha os campos abaixo para indicar esta página:
Seu nome:
Seu e-mail:
Nome do indicado:
E-mail do indicado:
Deixe uma mensagem:
Anti-spam:

(nova imagem)
Preencha o que vê:
Twitter diHITT Facebook delicious envie por e-mail comentar

comentarComentários:

Preencha o formulário para comentar:

[x] Fechar
Nome:*
E-mail:* (não será exibido)
Site: (http://)
Comentário:*
Anti-spam:

(nova imagem)
Preencha o que vê:

Deseja receber as respostas dos comentários

Maikon
Publicado em:
13/05/2009 - 11:03
Muito bom este script ! Mesmo. Vlw

Da pra saber quando vai terminar de carregar, etc. Parecido com Flash =D