Ir para conteúdo

POWERED BY:

Arquivado

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

Luizgrs

Carregando outro xmlhttprequest dentro do onreadystatechange...

Recommended Posts

Olá,

Estou fazendo um sistema de login (ajax/asp) e essa parte que está dando problema é quando o login é rejeitado e eu tenho que recarregar a página que possui o formulário, estou fazendo da sequinte maneira:

 

ajax.onreadystatechange	= function(){	if(ajax.readyState == 1){ //Consula em Andamento			d.innerHTML = 'Carregando...'	}	if(ajax.readyState == 4){						var resultado = ajax.responseText;			resultado = resultado.replace(/\+/g," ");			resultado = unescape(resultado);			if (resultado.length == 1){				 ajax2 = CriaAjax()				 ajax2.open("get","frm_login.asp?e=1",true)				 ajax2.onreadystatechange = function(){		  //até aqui vai no firefox   			if (ajax2.readystate == 4){				alert(resultado) //no firefox não chega nessa parte				var resultado = ajax2.responseText;				resultado = resultado.replace(/\+/g," ");				resultado = unescape(resultado);				document.getElementById("login").innerHTML = resultado			}		}		ajax2.send(null);		   }		  else {		d.innerHTML = resultado //login com sucesso					  }	}}ajax.send(null);

No IE funciona certinho, mas no firefox não (só vai até a parte marcada)...

E como javascript não é meu forte fica aí meu pedido de ajuda à vocês ^^...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta o codigo assim pra ver o erro:

E Posta ai o erro.. ok:

 

ajax.onreadystatechange	= function(){	if(ajax.readyState == 1){ //Consula em Andamento			d.innerHTML = 'Carregando...'	}	if(ajax.readyState == 4){						var resultado = ajax.responseText;			resultado = resultado.replace(/\+/g," ");			resultado = unescape(resultado);			if (resultado.length == 1){				 ajax2 = CriaAjax()				 ajax2.open("get","frm_login.asp?e=1",true)				 ajax2.onreadystatechange = function(){		  //até aqui vai no firefox  			if (ajax2.readystate == 4){				if (ajax2.status == 200){					   alert(resultado) //no firefox não chega nessa parte					  var resultado = ajax2.responseText;					  resultado = resultado.replace(/\+/g," ");					  resultado = unescape(resultado);					  document.getElementById("login").innerHTML = resultado				 } else {						  alert("Erro: "+ajax2.status);				 }			}		}		ajax2.send(null);		   }		  else {		d.innerHTML = resultado //login com sucesso					  }	}}ajax.send(null);

Tenta pra ver no que dá... valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você não precisa dessa complicação toda só pra re-exibir o formulário não... heheh

 

Faz o seguinte. Guarda o conteúdo atual do elemento que contém o código do formulário numa string e depois, após você testar que retornou errado, é só você jogar ela novamente no innerHTML sacou?

Por exemplo, suponhamos que o elemento que tenha o formulário seja o elemento 'd' que você colocou o carregando lá em cima:

if(ajax.readyState == 1){ //Consula em Andamento			var_guarda_form = d.innerHTML //to guardando			d.innerHTML = 'Carregando...'	}	if(ajax.readyState == 4){			var resultado = ajax.responseText;			resultado = resultado.replace(/\+/g," ");			resultado = unescape(resultado);			if (resultado.length == 1){				//se retornou errado, eu volto o formulário para o d				d.innerHTML = var_guarda_form;

Sacou?

Ah e existem outras inúmeras formas de se fazer isso sem precisar cirar outro ajax só pra reexibir algo que já está exibido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, tinha esquecido desse tópico aqui xDmicox falou uma verdade, eu tava viajando aqui...é que eu precisava mostrar uma mensagem de erro no login daí eu recarregava o formulário com um parâmetro, mas vou usar um div invisivel para isso...Valeu o/

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.