Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patricia

readyState <> 4

Recommended Posts

To usando ajax em um sistema, e o codigo passa pela minha função que cria o xmlhttp, vai pro servidor, faz o que tem que fazer, mas dá uma mensagem de erro, por que não entra no readyState == 4, tá rolando, mas dá uma piscada na div com a palavra erro.

 

O que faz com que o readyState seja <> 4 ???

 

O que eu posso fazer pra corrigir o erro?

 

 

xhReq.onreadystatechange = function(){		if (xhReq.readyState == 1) { conteudo.innerHTML = "carregando..."; } // Quando estiver carregando, exibe: carregando...		if (xhReq.readyState == 4) {			if (xhReq.status == 200) { //Se a "status" retornado for "ok" (ver propriedade "status")				conteudo.innerHTML = unescape(xhReq.responseText.replace(/\+/g," "));			} else {				//Se o servidor retornou outro código que não "200", mostrar o erro.				alert('Erro: "'+ xhReq.statusText +'"'); //(ver propriedade "statusText")			}		} else {			conteudo.innerHTML = "Erro"; // Se readyState <> 4, exibe: erro			//alert('Erro: "'+ xhReq.readyStateText +'"');		} 	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

xhReq.onreadystatechange = function(){		if (xhReq.readyState == 1) { conteudo.innerHTML = "carregando..."; } // Quando estiver carregando, exibe: carregando...		if (xhReq.readyState == 4) {			if (xhReq.status == 200) { //Se a "status" retornado for "ok" (ver propriedade "status")				conteudo.innerHTML = unescape(xhReq.responseText.replace(/\+/g," "));			} else {				//Se o servidor retornou outro código que não "200", mostrar o erro.				alert('Erro: "'+ xhReq.statusText +'"'); //(ver propriedade "statusText")			}		} 	}
pode ser que tenha algum state maior que 4... E se passar do 4, ele substitui sua resposta por uma mensagem de erro que eu não faço idéia do que seja.

De qualquer forma, verifique erro somente em if (xhReq.status == 200) {

Foi o que eu fiz nesse codigo aí acima.

Abraços, T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, eu tenho este código:

 

    function lerValor(caminho,arquivo){
        valor = ajaxInit();
        valor.open("GET",'administracao/arquivo.asp?caminho='+caminho+'&arquivo='+arquivo, true);
        valor.onreadystatechange=function() {
            if (valor.readyState==1){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||| 25%</div>';}
            if (valor.readyState==2){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||||| 50%</div>';}
            if (valor.readyState==3){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||||||| 75%</div>';}
            if ((valor.readyState==4) && (valor.status==200)){
            document.getElementById("Valor").innerHTML = valor.responseText;
            document.getElementById('aguarde').style.display='none';
            }
        }
        valor.send(null);
    }

Bem, acho que vcs sabem o que ele faz, mas mesmo assim, explico...... ele envia e le uma página externa, é um upload, eu pego o direcionamento e o arquivo e envio pro meu BD, o que eu queria, era brincar um pouco mais com os estados em que ele está, como você viram eu usei o readyState em 4 passos colocando o carregamento do arquivo em 25%, 50% 75% e o último que carregou o arquivo.

Eu queria colocar mais váriaveis, tipo do 1% ao 100%, como eu faço isso????? tem algum readyState que eu possa fazer a mais tipo:

 

            if (valor.readyState==1){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||| 25%</div>';}
            if (valor.readyState==1.5){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||| 35%</div>';}
            if (valor.readyState==2){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||||| 50%</div>';}
            if (valor.readyState==2.5){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||||| 60%</div>';}
            if (valor.readyState==3){document.getElementById("carregando").innerHTML = '<div id=aguarde><b>AGUARDE</b> Carregando campos... ||||||| 75%</div>';}
            if ((valor.readyState==4) && (valor.status==200)){
            document.getElementById("Valor").innerHTML = valor.responseText;
            document.getElementById('aguarde').style.display='none';
            }

e assim por diante......

obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não funciona dessa maneira.

E os readyStates não te devolvem essas porcentagens não. Cada valor dessa propriedade possui um significado.. mas não indica que 'já foi realizados tantos porcento'.

 

Existem algumas soluções prontas para barras de progresso com upload.

swfupload é uma ótima opção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse seu código tem 2 problemas:

1 - Não existem valores "quebrados"

2 - Alguns navegadores não retornam os estados 1 e 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.