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

JavaScript Discussion :

[AJAX] Liens chargés avec une fonction Ajax


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [AJAX] Liens chargés avec une fonction Ajax
    Bonjour à tous,
    je suis en ce moment sur le développement d'un site et sur une page j'ai créé un calendrier simple. Je l'ai couplé avec Facebox, un petit script permettant d'afficher des infos dans une "fenêtre" dans la fenêtre principale, afin d'afficher les évènements d'un jour. Voila ce que donne un lien d'un jour avec un évènement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="includes/calendrier/event.php?day=2&month=03&year=2009" rel="facebox" class="calendar-event">2</a>
    J'ai utilisé Ajax afin de recharger le calendrier lorsque l'utilisateur veut changer de mois. Exemple: nous sommes sur le mois de Mars 2009 (3/2009)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <table class="calendar-head"><tr> 
    <td width="21px"><a href="javascript:ajaxCal(2,2009)">&lt;&lt;</a></td> 
     <td width="100%">&nbsp;  Mars&nbsp;2009&nbsp;</td> 
    <td width="21px"><a href="javascript:ajaxCal(4,2009)">&gt;&gt;</a></td> 
    </tr></table>
    La fenêtre Facebox fonctionne très bien au 1er chargement de la page. Par contre, dès qu'on change de mois avec le lien utilisant la fonction Ajax, les infos sur l'évènement ne se chargent plus dans la boite Facebox mais dans une nouvelle page...

    En me renseignant autour de moi, j'ai entendu dire qu'Ajax ne rechargeait pas l'arbre DOM de la page et que mon problème viendrait de là. Est-ce vrai? Si oui, que dois-je faire?

    Sinon, quelqu'un a t'il d'autres idées? S'il faut un bout de code supplémentaire, des impressions d'écrans ou autres, n'hésitez pas.

    Merci beaucoup pour votre aide!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En me renseignant autour de moi, j'ai entendu dire qu'Ajax ne rechargeait pas l'arbre DOM de la page et que mon problème viendrait de là. Est-ce vrai? Si oui, que dois-je faire?
    Non, ce n'est pas spécialement vrai, bien que cela dépende de plusieurs paramètres.
    Ceci dit, ton problème ne vient pas de là, c'est un classique des rafraichissements Ajax.
    Dans ton cas, tu as probablement initialisé ton FaceBox au chargement de la page, donc seuls les éléments présents à ce moment là sont pris en compte, pas ceux créés ultérieurement. Pour ceux-ci, il faut réinitialiser la fonction (par exemple en relançant la fonction présente sur le onload de la page).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    jQuery(document).ready(function($) {
          $('a[rel*=facebox]').facebox({
            loading_image : 'loading.gif',
            close_image   : 'closelabel.gif'
          }) 
        })
    Voilà l'initialisation que je fais lors du chargement de ma page. Je l'ai remis dans la fonction ajax qui me change le calendrier, rien à faire.
    J'ai aussi essayé en remettant les <script></script> du head de ma page dans le calendrier chargé, ca ne fait rien non plus...

    Je perds pieds dans un domaine que je ne connais pas vraiment!

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('a[rel*=facebox]').facebox({
        loading_image : 'loading.gif',
        close_image   : 'closelabel.gif'
    })
    c'est cette partie là qu'il faut appeler, pas le jQuery(document).ready(function($)

Discussions similaires

  1. [AJAX] fonction Ajax
    Par aztec dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/05/2008, 20h00
  2. [AJAX] requete SQL avec une fonction javascript
    Par Mitsu78 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/03/2008, 21h37
  3. [AJAX] valider un formulaire avec une fonction ajax
    Par freums dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/02/2008, 11h34
  4. [AJAX] Ajax avec une fonction JS
    Par iwf-fr dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/09/2007, 19h25
  5. [AJAX] Envoi ou non d'un formulaire avec une fonction AJAX
    Par ohhh.gringo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2007, 11h47

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