Ir para conteúdo

POWERED BY:

Arquivado

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

ricardo.frias

Link não funciona após login

Recommended Posts

Bom dia,

 

Estou fazendo um login, usando Ajax para enviar os dados para uma página PHP, que devolve com a resposta se o login foi ou não validado. Se estiver ok, eu atualizo uma DIV com os dados do usuário logado e exibo o avatar, sem dar o refresh na página, até ai tudo certo.

 

O problema que estou tendo, é que após a atualização dessa DIV, o link do avatar que abre um menu, simplesmente não funciona, apenas eu dando um F5 ele volta a funcionar. Alguém sabe o que pode ser?

 

Estou fazendo da seguinte forma:

$("#login").click(function(){
    username=$("#username").val();
    if (username == "") {
        $("#add_erro_login").html("Digite o usuário cadastrado");
        $("#username").focus();
        return false;
    }
 
    password=$("#password").val();
    if (password == "") {
        $("#add_erro_login").html("Digite a senha cadastrada");
        $("#password").focus();
        return false;
    }
    
    $.ajax({
        type: "POST",
        url: "login.php",
        data: "name="+username+"&pwd="+password,
        success: function(html){
            if(html=='true')
            {
                document.form1.loading.style.visibility = "hidden";
                $("#login-form").fadeOut("slow");
                $("#background-on-popup").fadeOut("slow");
                $("#perfil").fadeOut("fast");
                $("#perfil").load("perfil.php");
                $("#perfil").fadeIn("fast");
             }
            else 
            {
                document.form1.loading.style.visibility = "hidden";
                $("#add_erro_login").html("Usuário ou Senha inválido");
            }
        },
        beforeSend:function()
        {
            document.form1.loading.style.visibility = "visible";
            $("#add_erro_login").html("");
        }
    });
    return false;
});	

Abs,

Ricardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, utilize o método on() no estilo delegate para atrelar teus eventos.

 

Algo como, trocar:

$('a').click(... 
por

$('body').on('click', 'a', function(){... 
Mas dá uma lida sobre esses caras para vc entender o motivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu William!

 

Li a respeito, mas não entendi o que seria esse $('body') do seu exemplo.

 

Ficaria assim?

$('body').on('click', '#login', function(){

Compartilhar este post


Link para o post
Compartilhar em outros sites

o 'body' é o body em si do html, a tag <body>

 

#login é o ID do elemento que recebe o click ?

se for, está correto o que vc fez.

 

 

 

Vc leu mas não entendeu o que é delegate ne?! =/

http://wbruno.com.br/javascript-puro/delegate-events-no-javascript/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo, é o ID que recebe o click.

 

Coloquei um Alert logo após essa linha e ele executou, só que o link do avatar continuar nao funcionando.

 

Vou ler seu artigo.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

William, sabe se isso também afeta as variaveis de sessão do PHP? Porque agora que corrigi o link do avatar, a variavel de sessão que uso para identificar o usuário está vindo com valor VAZIO...

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem relação direta com o php, mas note que vc precisa ir no servidor e buscar essa info.

 

Ai o seu problema já está no php, e não mais no js.

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.