Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Rangel

[Resolvido] Plugin Validate Jquery

Recommended Posts

eu sempre tive problemas em usar o remote com validate.

 

estou utilizando o jquery 1.8.2 e a última versão do validate..

 

quando utilizo o remote o erro da sempre independente se o retorno é true ou false.

 

$('#form').validate({
rules: {
 email : {
   remote: {
     url: "ajax.php",
     type: "POST",
     data: {
      email: function(){
         return $('#email').val();
       }
     }
   }
 }
})
},
messages: {
email : {
  remote: "Email já existe"
 }
}

 

ele sempre traz o erro, mesmo que não existe.

não coloquei o ajax.php por que todos os retornos estão certos parece que é algo do plugin mesmo que buga.

 

se já aconteceu com alguém por favor da uma ajuda ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o teu arquivo ajax.php por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

case 'existeEmail':
			$usuario = new Usuario();

			echo ($usuario->existeRegistro('email', $_POST['email'])) ? 'false' : 'true';
		break;

 

public function existeRegistro($campo, $val = ''){
		if(is_string($campo)){
			$val = ($campo == 'senha') ? 'HEX("'.base64_encode($val).'")' : "'{$val}'" ;
			return (DB::conn()->query("SELECT COUNT(id) FROM cc_users WHERE {$campo} = {$val}")->fetchColumn() > 0);
		} else {
			$sql = "SELECT COUNT(id) FROM cc_users WHERE ";

			foreach($campo as $k => $v){
				$val = ($k == 'senha') ? 'HEX("'.base64_encode($v).'")' : "'{$v}'" ;
				$sql .= "{$k} = {$val} AND ";
			}

			$sql = substr($sql, 0, -4);

			return (DB::conn()->query($sql)->fetchColumn() > 0);
		}
	}

 

mais como disse, todos os retornos estão certos;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certeza de que está entrando no case ?

case 'existeEmail':

 

muda para GET, ou acompanhe a requisição via firebug. Me parece que não está executando o case correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que não cara.

 

Sempre que eu "me perco", eu isolo o problema e testo ele separadamente.

Sem o restante, até sem layout.

 

 

Pelo Firebug o retorno foi oque você esperava ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu trabalho com o chrome e uso o inspect para debugar.

 

ele me retorna o $_POST['email'], ele retorna a quantidade de colunas que possuem o email e também me retorna true or false dependendo do resultado.

 

ai quando vai para o validate ele fica dizendo que o email já esta cadastrado mesmo se não estiver, no caso a mensagem eu defini em messages.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste isolado aqui. O plugin funciona bem.

 

<!DOCTYPE HTML>
<html lang="en-US">
<head>
   <meta charset="UTF-8">
   <title></title>
</head>
<body>


   <form action="" id="form">
       Email: <input type="text" name="email" />
       <input type="submit" name="ok" value="ok" />
   </form>
   <div id="result"></div>

<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
   var $form = jQuery('#form'),
   $result = jQuery('#result');

   $form.validate({
       rules: {
           email : {
               remote: { url: "ajax.php" }
           }
       },
       messages: {
           email: 'Email já existe!'
       }
   })
});
</script>
</body>
</html>

 

e o php:

<?php


if( $_GET['email']=='a@a.com.br' )
echo 'false';
else
echo 'true';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá.

 

versão que utilizei do jquery foi a 1.8.2

 

e eu fiz por post

 

$('#form').validate({
rules: {
 email : {
   remote: {
     url: "ajax.php",
     type: "POST",
     data: {
      act: 'verificarEmail',
      email: function(){
         return $('#email').val();
       }
     }
   }
 }
})
},
messages: {
email : {
  remote: "Email já existe"
 }
}

 

e é dai que vem o case por que essa página ajax trata todas as requisições do ajax.

_____________________________________________________

 

Obrigado pela atenção de qualquer forma mas farei as verificações manuais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do que eu testei, essas linhas:

       email: function(){
         return $('#email').val();
       }

são desnecessárias e estavam ocasionando erros no retorno da requisição.

 

 

Forcei um cabeçalho JSON tb, e funcionou aqui:

header('content-type: application/json; charset=utf-8');

Compartilhar este post


Link para o post
Compartilhar em outros sites
Do que eu testei, essas linhas:

 email: function(){
         return $('#email').val();
       }

são desnecessárias e estavam ocasionando erros no retorno da requisição.

 

exatamente isso..

 

obrigado cara.

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.