Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 ^^...
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.
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/
Tenta o codigo assim pra ver o erro:
E Posta ai o erro.. ok:
Tenta pra ver no que dá... valeu!