Jump to content
Fórum Script Brasil
  • 0

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


Weuller Krysthian

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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!"); 
   }
}

Edited by fiote
Link to comment
Share on other 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 to comment
Share on other 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. Edited by fiote
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...