IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Callback dans la fonction $.Ajax ?


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut Callback dans la fonction $.Ajax ?
    Bonjour à tous !

    Dans un site, j'utilise la fonction $.Ajax pour afficher les commentaires de mes articles. l'utilisateur peux ainsi afficher 4 par 4 les commentaires de l'article sans pour autant recharger à chaque fois la page.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $(".link_com").click(function() {
    	 $.ajax({ 
            type: "GET", 
            url: $(this).attr("href"), 
            success: function(retour){    
    			$(".ajax_com").empty().append(retour); 			
            } 
        }); 
        return false; 
    });
    Ici, link_com est la classe css associée à tous les liens visant les différentes pages de commentaires et ajax_com est la classe associée au conteneur dans lequel je veux afficher les commentaires contenu dans la page ciblée par$(this).attr("href").

    Jusque là aucun problème tout s'affiche correctement.

    Maintenant, pour éviter que le chargement des commentaires se fasse trop brutalement, j'aimerai bien effectuer un effet fadeOut sur les commentaires qui disparaissent et un effet fadeIn sur les commentaires qui apparaissent.

    Mais ou placer ces insctruction ?!
    Ou peut on faire un callback dans la fonction $.Ajax où je pourrais mettre mon fadeIn et quand mettre le fadeOut ?

    J'ai essayé un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $(".link_com").click(function() {
            $(".ajax_com").fadeOut("slow");
    	 $.ajax({ 
            type: "GET", 
            url: $(this).attr("href"), 
            success: function(retour){    
    			$(".ajax_com").empty().append(retour);
                            $(".ajax_com").fadeIn("slow");
     
            } 
        }); 
        return false; 
    });
    mais ça ne marche évidemment pas... Les deux effets s'effectuent l'un juste après l'autre, après que les commentaires se soit affichés.

    Une idée ?
    merci !

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    As-tu regardé la documentation officielle de jQuery ?
    Elle en parle

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Personnellement, je consulte http://jquery.developpeur-web2.com/ et il me dirige vers les options beforeSend et complete.

    D'où un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $(".link_com").click(function() { 
    	$.ajax({ 
            type: "GET", 
            url: $(this).attr("href"),
            success: function(retour){ 
     
    			$(".ajax_com").empty().append(retour); 
    			$(".ajax_com").fadeIn("slow");
     
            }, 
    		beforeSend: function(retour){ 
    			$(".ajax_com").fadeOut("slow"); 
    		},
    		complete: function(retour){ 
    			$(".ajax_com").fadeIn("slow"); 
    		}
        }); 
        return false; 
    });
    Le problème c'est que ça me fait exactement la même chose. (apparition d'abord des commentaires puis les deux effets s'enchainent).

    Mais en plus il y a un très disgracieux décalage de la page qui se met au niveau du lien lors du clic...

    Je m'y prend mal ? Une meilleure idée ?

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $(".link_com").click(function() {
        $(".ajax_com").fadeOut("slow", function(){
             $.ajax({ 
                type: "GET", 
                url: $(this).attr("href"), 
                success: function(retour){    
                    $(".ajax_com").empty().append(retour);
                },
                complete: function(retour){ 
                    $(".ajax_com").fadeIn("slow"); 
                }
            }); 
        });
     
        return false; 
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. appel d'un autre callback dans une fonction
    Par jponsoda dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 23/06/2010, 10h01
  2. [Prototype] Récupérer une valeur dans une fonction Ajax
    Par nkordiko dans le forum Bibliothèques & Frameworks
    Réponses: 17
    Dernier message: 08/01/2010, 11h50
  3. [AJAX] fonction ajax
    Par kati1985 dans le forum AJAX
    Réponses: 3
    Dernier message: 18/09/2009, 13h17
  4. [AJAX] comment recupere une div dans une fonction ajax
    Par bachboucha dans le forum AJAX
    Réponses: 14
    Dernier message: 26/05/2009, 14h59
  5. [AJAX] [XAJAX] Lancer une fonction JS dans une fonction AJAX
    Par sixieme-sens dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/12/2008, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo