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

Função de valiação via ajax não retorna booleano


Weuller Krysthian

Pergunta

Fiz uma função que verifica se o login já está cadastrado na database, e requisição via ajax dessa função. Testei direitinho, o ajax ta retornando o valor, o problema é que tenho que fazer que a função retorne false, caso o login exista. E a função não está retornando nada, mas á requisição ta ok, na função php, quando já ta cadastrado, mandei mostrar true na tela, em forma de string.

Fiz algumas tentativas, acho que é por causa que a função que retorna a requisição é interna, não da para acessar o parametro dela, nem setar uma variavel de fora, para depois fazer a comparação, e retornar o boleano, alguém da algum help ai?

Ta ai meu script que faz a requisição, valeu:

function checkLogin(){
    login = $("#login").val();
    $.ajax({
        processData: 'application/x-www-form-urlencoded',
        type: 'post',
        data: {'type':'login', 'value' : login},
        dataType: 'html',
        url: 'classes/checkLoginAndEmail.class.php',
        success: function (retorno){
            if(retorno == 'true'){return false; } else {return true;}
        },
        error: function(erro){
            alert(erro);
        }
    });
}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Weuller... ajax não retorna nada.

Se você faz var ok = checkLogin();, o javascript não vai "esperar" o retorno do ajax pra continuar a execução, ele vai simplesmente continuar com o próximo comando.

Supondo que o seu código esteja assim:

var ok = checkLogin();
if (ok) {
   alert("login correto!");
} else {
   alert("login errado!"); 
}
Isso não vai funcionar. Ele sempre vai aletar "login errado", ou nem vai alertar nada. Você precisa trabalhar ao redor disso. Dentro do success da sua requisição, chame outra função (por exemplo, resultadoCheckLogin(retorno)) que aí sim irá tratar o retorno. Assim ó:
checkLogin();
....
function resultadoCheckLogin(ok) {
   if (ok) {
      alert("login correto!");
   } else {
      alert("login errado!"); 
   }
}

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

  • 0

Eu tentei aki, mas não deu, por que presciso que essa função retorne o boleano, e se eu crio uma função dentro dela também não funciona.

Estou querendo utilizar essa função em um complemento para o plugin validity, para verificar na database se o login já está sendo usado ou não, ai presciso que ele retorne true ou false, para que libere o cadastro ou bloqueie se o login já estiver em uso.

Link para o comentário
Compartilhar em outros sites

  • 0
por que presciso que essa função retorne o boleano
E eu preciso de uma máquina de teleporte, lol.

e se eu crio uma função dentro dela também não funciona.
Bem, então tem algo errado no seu código. Se possível, favor postá-lo. Editado por fiote
Link para o comentário
Compartilhar em outros sites

  • 0

Então, a função é so essa, pega a pagina e retorna true ou false dependendo se o php achar o resultado ou não.

Será que tem como fazer isso diferente? algo que retorne um booleano? pois essa função é um compelemento pro plugin validity, se tiver o login ele bloqueia pra pessoa não fazer o cadastro e avisa no form.

A função é so essa, será que tem como fazer de outro modo que possa ter o resultado desejado?

Link para o comentário
Compartilhar em outros sites

  • 0

O javascript executa uma linha de cada vez, em sequencia. Quando você faz uma requisição ajax, ele chama esse ajax e continua executando o código. Quando o ajax volta do servidor com o resultado, JÁ ERA. Não tem como "retornar" nada porque o script já passou.

O tal "validity" deve ter um fluxo de execução. Você vai ter que quebrar esse fluxo em duas partes e o seu ajax vai fazer a ponte entre as duas. Não tem outra forma decente de fazer isso.

Mas se você não consegue fazer isso, tem outra forma. Logicamente, uma forma porca e não confiável: Faça a sua pagina carregar a sua base de usuários inteira e grave num vetor javascript. Faça a sua checkLogin() consultar esse vetor ao invés de consultar o banco. Agora sim você pode retornar um booleano.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...