Ir para conteúdo

POWERED BY:

Arquivado

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

Gabriel T.

[Resolvido] Jquery Validate: Retorno true / false

Recommended Posts

Boa tarde pessoal!

Bom, estou com uma dúvida...

Tenho um código que ele somente retorna a função success, mesmo não enviando os dados para o banco de dados.

 

Aqui está o ajax:

 

<script type="text/javascript">
 $(document).ready(function(){
	$('#contact_for').validate({
		rules: {
			//...
		},
		messages: {
			//...
		},  
                   submitHandler: function( form ){  
                       var dados = $( form ).serialize();
                       $.ajax({  
                           type: "POST",  
                           url: "processarcontato.php",  
                           data: dados,  
						beforeSend: function(){
							$("#contact_for").fadeOut(700, function(){
								$("#loadingr").fadeIn(700);
							});
						}, 
						complete: function(){
							$("#loadingr").fadeOut(700);
						},
                           success: function(){
                               $("#successr").fadeIn(700).delay(10000).fadeOut(700, function(){
								$('#contact_for')[0].reset();
								$("#contact_for").fadeIn(700);
							});
                           },
						error: function(){
							$("#loadingr").fadeOut(700, function(){
                               $("#errorr").fadeIn(700).delay(10000).fadeOut(700, function(){
								$('#contact_for')[0].reset();
								$("#contact_for").fadeIn(700);
								});
							});
						} 
                       });  
                       return false;  
                   }  
               });  
           });  
</script>

 

E o processarcontato.php:

 

<?php
include "conexao.php";
$nome2 = utf8_decode($_POST['nome2']);
$email2 = utf8_decode($_POST['email2']);
$assunto2 = utf8_decode($_POST['assunto2']);
$mensagem2 = utf8_decode($_POST['mensagem2']);

$enviar = "INSERT INTO testeh (nome, email, assunto, mensagem) VALUES ('$nome2', '$email2', '$assunto2', '$mensagem2')";
$success = mysql_query($enviar); 
if($success == 1){
echo "true";
}else{
echo "false";
}
?>

 

Eu tirei todo o código da página processarcontato.php e mesmo assim continua retornando true...

Obrigado pela atenção pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sempre vai cair no success.

 

só não cai no success, se a requisição falhar, e não se o retorno não for positivo.

oq você precisa fazer, é testar o retorno:

 

 

success: function( data ){
 if( data=='true' ){ alert( 'deu tudo certo no banco!' ) }

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, entendi.

Obrigado pela resposta.

Fiz isto aqui:

 

<script type="text/javascript">
 $(document).ready(function(){
	$('#contact_for').validate({
		rules: {
			//...

		},
		messages: {
			//...
		},  
                   submitHandler: function( form ){  
                       var dados = $( form ).serialize();
                       $.ajax({  
                           type: "POST",  
                           url: "processarcontato.php",  
                           data: dados,  
						beforeSend: function(){
							$("#contact_for").fadeOut(700, function(){
								$("#loadingr").fadeIn(700);
							});
						}, 
                           success: function(data){
							if(data=='true'){ 
								setTimeout('$("#loadingr").fadeOut(700)', 1000), function(){
								setTimeout('$("#successr").fadeIn(700).delay(10000).fadeOut(700)', 1000), function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								}
							}
							}else{
							$("#loadingr").fadeOut(700, function(){
								$("#errorr").fadeIn(700).delay(10000).fadeOut(700, function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								});
							});
						}
						},
						error: function(data){
							setTimeout('$("#loadingr").fadeOut(700)', 1000), function(){
								setTimeout('$("#successr").fadeIn(700).delay(10000).fadeOut(700)', 1000), function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								}
							}
						} 
                       });  
                       return false;  
                   }  
               });  
           });  
</script>

 

Mas está acontecendo algum erro, pois após fazer o fadeOut() da div carregando, a de sucesso não aparece...

Fiquei horas tentando solucionar este erro mas não consegui nada.

Poderia me ajudar?

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

retira esse setTimeout()

 

apenas o .delay() já resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim.

Então fiz assim:

 

                           success: function(data){
							if(data=='true'){ 
								$("#loadingr").fadeOut(700, function(){
								$("#successr").fadeIn(700).delay(10000).fadeOut(700, function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								});
							});
							}else{
							$("#loadingr").fadeOut(700, function(){
								$("#errorr").fadeIn(700).delay(10000).fadeOut(700, function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								});
							});
						}
						},
						error: function(error){
							$("#loadingr").fadeOut(700, function(){
								$("#errorr").fadeIn(700);
								$("#teste").html(error);
								$("#error").delay(10000).fadeOut(700, function(){
									$("#contact_for")[0].reset();
									$("#contact_for").fadeIn(700);
								});
							});
						} 

 

Deu certo, mas não haverá algum conflito?

E como posso testar a function(error)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo, mas não haverá algum conflito?

oq exatamente você chama de conflito ?

 

E como posso testar a function(error)?

remova o arquivo php de lugar.

ai vai retornar 404, vai falhar a requisição, e deverá cair no error:

 

 

 

qndo for assim, poste apenas o trecho de código q estamos olhando, e não tudo isso ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta.

Agora está tudo certo.

E me desculpe pelo código, não percebi... :P

 

Sobre o conflito, digo que se teria alguma possibilidade de algum navegador entender o script de alguma outra maneira, mas acho que isso não vai acontecer não...

 

Muito obrigado.

Resolvido! :lol:

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.