tá me tirando um tempo já isso, mas enfim estou usando a função $.post() do jQuery pra fazer uma requisição sem reload na pagina pra saber,
se o valor que estiver no campo já está cadastrado no banco de dados.
no foi criado o seguinte método.
[code]$.validator.addMethod(“verificaLogin”, function(value){//adiciona o método chamado verificaLogin
var nome_post = value; //insere na variavel nome_post o que está no campo em que defini que terá esse método
$.post(“verificarLogin.php”, {name: nome_post}, function(data){ //no verificaLogin.php, ele retorna uma string no data “true” ou “false” usando o echo
if(data == “true”){
return true; // esse RETURN seria pro método verificaLogin, mas não funciona…
} else {
return false;// esse RETURN seria pro método verificaLogin, mas não funciona…também.
}
}
}
[/code]
após não conseguir com isso tentei assim:
[code]$.validator.addMethod(“verificaLogin”, function(value){//adiciona o método chamado verificaLogin
var nome_post = value; //insere na variavel nome_post o que está no campo em que defini que terá esse método
var retorno; // para passar o return fora do if
$.post("verificarLogin.php", {name: nome_post}, function(data){ //no verificaLogin.php, ele retorna uma string no data "true" ou "false" usando o echo
if(data == "true"){
retorno = true;
} else {
retorno = false;
}
}
return retorno; // e também não funciona.... What is that??!!!
Para fazer o que vc deseja tem algumas tecnicas. por exemplo crie uma variavel global “login_valido” que comeca falso e so sera verdadeiro apos o callback do $.post
Você não está entendendo como chamadas assíncronas funcionam.
Numa chamada síncrona você pode pedir por algo, e esperar um retorno dele ao finalizar.
Num chamada assíncrona, você pede alguma coisa, deixa com ele um callback(literalmente “chamada de volta” ou “avise-me”) e vai embora sem qualquer retorno. Quando ele executar a requsição, e obter um retorno, a ele então executará a ação que você deixou como callback.
function executarAlgumaAcao(data)
{
if (data == "true")
alert("Sucesso");
else
alert("Fracasso");
}
$.validator.addMethod("verificaLogin", function(value) {
var nome_post = value;
$.post("verificaLogin.php",{name: nome_post},function(data){
executarAlgumaAcao(data);
});
});