Ir para conteúdo
Fórum Script Brasil
  • 0

Função não retorna o valor.


Diego.G.A

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Esse é um problema recorrente quando se usa closures, deve tomar cuidado com o escopo da função que está usando.

O jQuery.ajax é uma função, o sucess é uma função que é executada de dentro da função ajax. Portanto, se você retornar true ou false no sucess, você estará retornando para a função jQuery.ajax e não para a função que chamou a jQuery.ajax.

jQuery é um objeto fechado, foi por agua abaixo esse seu esquema aí de retorno, rsrs.

Também não adianta usar o jQuery.ajax() como retorno, porque ele retorna o próprio jQuery.

Vai ter que usar outro esquema pro seu sistema.

Link para o comentário
Compartilhar em outros sites

  • 0

// Está função é uma mistura Ajax e jQuery para retornar true ou false requisição assíncrona

// Metodo para manipular regitros forma assincroma.

function loadPage(params, response) {

// Mostra uma mensagem para aguardar a resposta.

response.removeClass();

response.addClass("load");

response.text("Carregando..");

// Cria um objeto do ajax jQuery

var xmlHttp = $.ajax();

// Abre uma conexao a um arquivo especifico no servidor.

xmlHttp.open('GET', params, false);

// Solicitacao foi enviada de forma assincroma.

xmlHttp.send(null);

// Verifica se o retorn é verdadeiro.

if(xmlHttp.readyState == 4 && xmlHttp.status == 200){

// Recebe a resposta do servidor

return xmlHttp.responseText == '1';

}

}// end function

// Se você já resolvel o problema fica pro próximo q tiver o mesmo...

// Abraço

Editado por Apolinário Moreira
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...