2010-01-03 11 views
1

Voici le problème que j'ai. L'utilisateur peut se connecter, mais s'il ne rafraîchit pas la page, il ne peut pas se déconnecter. Alors, comment appeler un autre appel ajax juste après l'autre?Comment lancer un appel ajax après un autre appel ajax?

Le lien de déconnexion est en train d'être chargé par l'appel du premier ajax, cela pourrait-il être le problème?

Voici le journal dans le code jquery:

$(".bt_login").click(function(){ 
    $.ajax({ 
      type: 'POST', 
      url: 'widgets/Login/loginProcess.php', 
      data: dataString, 
      success: function(data){ 
       if(data == 'error'){ 
        alert('Wrong username and/or password!'); 
       }else{ 
        $('#loginForm').html(data); 
        $('#greet').html('Hello '+username+'!').fadeIn(); 
        $('#open').html('Open Panel'); 
       } 
      } 
     }); 
    }); 

Voici le journal sur le code jquery:

$('.bt_logout').click(function(){ 
     var dataString = 'process=logout'; 
     $.ajax({ 
      type: 'POST', 
      url: 'widgets/Login/loginProcess.php', 
      data: dataString, 
      success: function(data){ 
       $('#loginForm').hide().html(data).fadeIn(); 
       $('#greet').html('Hello Guest!'); 
       $('#open').html('Log In | Register'); 
      } 
     }); 
    }); 
+0

Vous pouvez également assurer le lien logout est toujours dans les DOM, mais initialement à afficher: aucun. Vous pouvez ensuite lier l'événement click à la fois à la connexion et à la déconnexion, comme vous le faites déjà maintenant. Ajoutez simplement une ligne à login/ajax/success pour montrer() le lien de déconnexion. – Cheekysoft

Répondre

1

Dans ce cas:

$(".bt_login").click(function(){ 
$.ajax({ 
     type: 'POST', 
     url: 'widgets/Login/loginProcess.php', 
     data: dataString, 
     success: function(data){ 
      if(data == 'error'){ 
       alert('Wrong username and/or password!'); 
      }else{ 
       $('#loginForm').html(data); 
       $('#greet').html('Hello '+username+'!').fadeIn(); 
       $('#open').html('Open Panel'); 

       // because .bt_logout only exists after this point: 

       $('.bt_logout').click(function(){ 
        var dataString = 'process=logout'; 
        $.ajax({ 
         type: 'POST', 
         url: 'widgets/Login/loginProcess.php', 
         data: dataString, 
         success: function(data){ 
          $('#loginForm').hide().html(data).fadeIn(); 
          $('#greet').html('Hello Guest!'); 
          $('#open').html('Log In | Register'); 
         } 
        }); 
       }); 
      } 
     } 
    }); 
}); 
2

Vous devez exécuter seulement le deuxième extrait de code une fois le lien de fermeture de session a été écrit afin de lier l'événement. Cela n'a rien à voir avec des appels Ajax consécutifs, mais tout à voir avec l'ajout du lien dans la méthode de succès du premier appel et ensuite sans liaison de son événement click.

3

Si vous voulez passer un appel à la suite, insérez le code pour appeler le deuxième appel dans la fonction "succès" de votre premier appel.

Questions connexes