Ir para conteúdo

POWERED BY:

Arquivado

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

Alex C. M. Munhoz

[Resolvido] Verificar usuário com AJAX

Recommended Posts

Olá amigos, estou recorrendo ao fórum porque estou com dificuldades na verificação de um usuários com ajax, segue meu form:

<form name="cadastro" action="cadastrar.asp" method="post" onsubmit="return validaform()">

   E-Mail: <input type="text" name="txtEMail" id="txtEMail" size="50" class="txtCad" onblur="ChecaUsuario();"/>
           <span id="aviso"></span ><br>

</form>

 

Script Java:


<script language="javascript"> 
<!--  
function ChecaUsuario() 
{ 
 // PASSO 1 – Tentativa de Criação do objeto AJAX 
 try 
 { 
  objetoAJAX = new XMLHttpRequest() 
 } 
 catch(e1) 
 { 
  try 
  { 
   objetoAJAX = new ActiveXObject("Msxml2.XMLHTTP") 
  } 
  catch(e2) 
  { 
   try 
   { 
    objetoAJAX= new ActiveXObject("Microsoft.XMLHTTP") 
   } 
   catch(e3) 
   { 
    objetoAJAX = false 
   } 
  } 
 }

 // Se consegui criar o objeto AJAX 
 if(objetoAJAX) 
  { 
   var objSpan =document.getElementById("aviso") 
   objSpan.innerHTML="Checando..." 
   //objSpan.innerHTML="<img src='imagens/loader.gif'>" 

   var txtUsuario = document.getElementById("txtEMail").value 
   var enderecoURL = 'checauser.asp?codigo='+escape(txtUsuario) 

   //Abre o Endereço especificado pelo metodo 'GET'  
   objetoAJAX.open("GET", enderecoURL ,true) 

   //Executada quando o navegador obtiver o código 
   objetoAJAX.onreadystatechange=function()  
   { 
		if (objetoAJAX.readyState==4)  
		// O valor 4 na propriedade readyState significa que o 
		//  objeto já completou/finalizou o recebimento de dados 
		{ 
			if ( objetoAJAX.status == 200)
			{
			  // 200=resposta do servidor OK - Lê o texto 
			  var texto= objetoAJAX.responseText 

			  //Exibe o texto no span AVISO 
			  objSpan.innerHTML=texto 	
			}

			{ 
			  objSpan.innerHTML="falha na verificação do e-mail." //+ objetoAJAX.statusText 
			} 
		}
   }

   // Vamos agora iniciar a execução do objeto AJAX 
   objetoAJAX.send(null) 
  } 
}  
--> 
</script> 

 

Pagina de Consulta ASP:

 


dim ors
set ors = server.CreateObject("ADODB.RecordSet")

ssql = empty
ssql = ssql & " SELECT email From cadastros "
ssql = ssql & " WHERE email = '" & request("codigo") & "'"

ors.cursorlocation = 3
ors.cursortype = 2

call abre_conexao

ors.open ssql, odb

if not ors.eof then

Response.Write("<span style='color:#F00; font:14px Arial, Helvetica, sans-serif;'>Indisponivel</span>")

else

Response.Write("<span style=color:green; font:14px Arial, Helvetica, sans-serif;>Disponivel</span>")

end if

ors.close
set ors = nothing  

call fecha_conexao

 

Observação:

A pagina de consulta está funcionando corretamente, me retorna se esta disponível ou não sem problemas.

 

No form o código carrega a mensagem de erro falha na verificação do e-mail, creio que esteja realizando o procedimento corretamente, pois não da erro no navegador.

 

Outro detalhe, o exemplo era para PHP, acredito que o problema esteja na hora que o ASP vai retornar o valor para o código do ajax, opinião de leigo, pois nunca trabalhei com Ajax essa é minha primeira vez, conheço um pouco de javascript mais muito básico.

 

 

Galera, estou com erro problema, ficarei muito grato me ajudarem a resolver esse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste isoladamente direto pelo o asp.

 

Vá na pagina asp, crie uma variável chamada "codigo" e coloque um valor... no caso um email inexistente primeiramente

 

codigo = "email@teste.com"

 

Depois modifique essa parte do seu query

 

ssql = ssql & " WHERE email = '" & request("codigo") & "'"

 

por esta

 

ssql = ssql & " WHERE email = '" & codigo & "'"

 

Execute a página checauser.asp e teste, veja se gera algum erro, se deu certo tente com um email existente, depois poste o resultado aqui para prosseguirmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com request.form não dará, isso porque os dados estão sendo passados por uma querystring.

 

o correto seria

 

codigo = Request.QueryString("codigo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, a pagina de consulta está ok, o problema é que não sei se está correto a forma de retornar para o Ajax os valores Disponível ou Indisponível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele esta gerando algum erro ??

verifique o que esta sendo passado em txtUsuario

 

var txtUsuario = document.getElementById("txtEMail").value 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que verificou que no asp não é o problema, faça agora o teste no javascript e veja se os dados estão sendo passados corretamente.

 

abaixo disso

 

var enderecoURL = 'checauser.asp?codigo='+escape(txtUsuario)

 

coloque isso

 

alert(enderecoURL);

 

Vai ficar assim

 

var enderecoURL = 'checauser.asp?codigo='+escape(txtUsuario)
alert(enderecoURL);

 

Execute a página e veja o que é passado no alert, veja se esta tudo saindo corretamente.

 

Depois poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora faça isso...

 

abaixo disso

 

var texto = objetoAJAX.responseText

 

coloque isso

 

alert(texto);

 

ficando assim

 

var texto = objetoAJAX.responseText
alert(texto);

 

vamos ver se ta retornando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu limpei todo o cabeçalho e as tags html, ficou só a programação com o <span>Indisponivel</span> e continua dando erro.

 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<span style=color:green; font:14px Arial, Helvetica, sans-serif;>Disponivel</span>

</body>
</html>

 

Olá amigos consegui resolver, troquei o local das mensagens, e ficou assim,


if ( objetoAJAX.status == 200)
{
// 200=resposta do servidor OK - Lê o texto 
var texto= objetoAJAX.responseText 

//Exibe o texto no span AVISO 
//objSpan.innerHTML=texto 	

objSpan.innerHTML="falha na verificação do e-mail." + objetoAJAX.statusText 

}

{ 
objSpan.innerHTML=texto 
} 

 

Agora está funcionando corretamente, me traz os resultados exatos.

 

Galera Muito obrigado pela ajuda de vcs.

 

Olá amigos, só mais uma duvida, tem como eu limpar o campo txtEMail caso o resultado seja indisponível?

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, basta criar uma variável vazia, assim

 

txtEMai = '';

 

Certo, mas como que verifico que o conteúdo da span aviso é disponível ou indisponível?

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.