Ir para conteúdo

POWERED BY:

Arquivado

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

Diego.G.A

Função não retorna o valor.

Recommended Posts

Ai galera é o seguinte eu tenho uma função em ajax, que o objetivo dela é retornar true ou false, mas ela não retorna nada.

 

segue o código abaixo que chama a função ajax:

fornecedores.cadastra = function() {
	if(!JValid.cnpj(cnpj)) {
		alert('Informe um CNPJ válido.');
		return false;
	} else {
		if(fornecedores.validaCnpj(cnpj)) {
			alert("Este CNPJ já encontra-se cadastrado.");
			return false;
		}
	}
}

função ajax:

fornecedores.validaCnpj = function(cnpj) {
	$.ajax({
		type: "POST",
		url: "validaCnpj.php",
		data: "cnpj="+ cnpj,
		success: function(msg) {
			var obj = eval("("+ msg +")");
			if(obj.status)
				return true;
			else
				return false;
		}
	});
}

página php que valida o cnpj:

<?php
require("intranet/autoload.php");

$fornecedores = new Fornecedores();

if($fornecedores->write("WHERE CNPJ='".Util::formataNumeroEntrada($_POST['cnpj'])."'"))
	exit("{status: true}");
else
	exit("{status: false}");
?>

 

o retorno do php funciona, a conversão em javascript para objetos JSON funciona a verificação se é verdadeiro ou falso funciona, mas na hora de retornar ele não retorna nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

lá no seu ajax, na parte do success, dá um alert no parâmetro para ver o que está vindo!

...
success: function(msg) {
   alert(msg);
}
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, como foi dito, ele funciona tudo certo, retorna o texto pelo ajax, depois eu converto a resposta para objeto, faço a verificação, mas na hora de retornar ele não retorna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que mudar a lógica da sua página, a função em sucess é assincrôna ela é executada tempos depois da função validaCnpj ter retornado algum valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe alguma maneira de mudar o tempo, para que a função tenha um retorno instantâneo?

 

Antes a função retornava instantaneamente, mas agora fica nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu ja passei por isso ,

tenho um topico aqui no forum com a resposta disso, porém eu naum fiz com framework, fiz com javascript puro..

 

E tem q jogar o ajax como Sincrono e trabalhar com 2 funções e variável global.. eh no doidera.. porém comigo funcionou:

 

A teoria e mais ou menos o seguinte, o ajax ele é assincrono do tipo : "aee servidor, toma essa requisição aqui, quando você terminar de resolver você jogar o retorno em algum lugar"

E você tem q jogar ela como sincrona "aeee servidor, toma essa requisição aqui, porém vou ficar aqui esperando a resposta"

 

Entaum você espera a resposta e joga um retorno dela pra uma variável global. Se naum me engano eh mais ou menos assim, foi em fevereiro q tive esse problema e naum me recordo mt bem como foi a logica q me explicaram no outro forum q me ajudaram com a resolução

 

segue o link do post.

 

http://forum.imasters.com.br/index.php...mp;#entry980446

 

 

Espero ter ajudado.. Abssss

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.