Free Tools

Votre publicité ici ?


Top des logiciels

1. HxD Hex Editor 1.6.1 (328 fois)

2. Open Office 2.2.1 (294 fois)

3. Delphi 6 (253 fois)

4. Windows Live Messenger (176 fois)

5. FireFox 2.0.0.12 (135 fois)


En bref

03 Sept 2008 Google Chrome : le navigateur 100 % Made In Google... ou presque !

28 Août 2008 Internet Explorer 8 : toutes les nouveautés du navigateur

18 Août 2008 Windows 7 : tout savoir sur le prochain système de Microsoft

13 Août 2008 The Pirate Bay censuré en Italie - L'arrêt de mort du réseau P2P ?

11 Août 2008 Hop : le nouveau téléphone jetable à 15€

Consulter les archives


Les derniers dossiers


Les ressources Delphi et C/C++

Music Pro Package

Afficher la date et heure du jour

Fonction affine

Alignement de séquences d'ADN

TatNum : gestion des images avec Qt


Membres en ligne :

Mordem


Nos partenaires

Espacerezo

KilaSoft


À votre tour, devenez partenaire de mx-dev.net.



Logo mx-dev.net

Le 1er du Web - Voter pour mx-dev.net


Vous êtes ici : Accueil › Forum › Prog diverses › Liste deroulante en ajax › Page 1


Liste deroulante en ajax




Malgon
Membre

Avatar de Malgon

Inscrit le 06 Mars 2008

51 messages
69 points

Profil Site Web

Posté le Lundi 23 Juin 2008 à 18:46

Salut,

voila, j'aurais aimé réaliser une liste déroulante en ajax, genre la messagerie de mx-dev. Je sais que ça doit se faire en ajax mais je n'ai pas trop d'idée de comment le réaliser 

 

@+

Malgon

Matt 261
Webmaster

Avatar de Matt 261

Inscrit le 13 Août 2007

115 messages
232 points

Profil Site Web

Posté le Marsdi 24 Juin 2008 à 15:53

Salut Malgon,

je vois que notre messagerie fait des émules ! mdrr !

En fait, il ne s'agit pas d'une liste déroulante mais d'une balise que l'on vient remplir avec du texte.

Je m'explique : lors de la récupération des messages privés des membres sur le serveur, le script affiche sur la page Date, Sujet, Récepteur + un espace blanc. Cet espace est répéré par l'indentifiant du message dans la base de données plus quelques ajouts "persos". Lors du clic sur le titre du message, cela va lancer un script Javascript. En fonction de la présence ou non de texte dans ladite balise, la fonction Javascript va contacter le serveur pour retourner le message ou alors effacer le texte contenu dans cette balise.

Voici le script que j'utilise (côté client, pour le serveur, une petite requête SQL et le tour est joué !) :

  • Voila la structure type d'un message

    <p onClick='javascript:showmail(ID-MAIL, ID-BALISE);'> SUJET DU MESSAGE</p>
    <div id='ID-BALISE'></div>

Les ID-MAIL et ID-BALISE sont générés par le script PHP. Lors d'un clic sur le sujet, Javascript va exécuter ma fonction showmail en envoyant comme paramètres l'identifiant du mail à aller chercher et où écrire le contenu.

 

  • La fonction maintenant :

    <script type="text/javascript">
      function writediv(texte, div)
         {
             document.getElementById(div).innerHTML = texte; //On écrit dans le div le texte envoyé par le serveur
         }   
         
    function showmail(mail, div)
        {
        if(mail != '') //Si l'identifiant est bien indiqué
           {
                test = document.getElementById(div).innerHTML; //Récupération du contenu du div
                if(test && test != '') //La zone est-elle vide ?
                    {
                        writediv('', div); //Si non, on efface       
                    }
                else
                    { //Si elle est bien vide, on va chercher le contenu du message   
                   if(texte = file('mail.php?id='+escape(mail)))
                             {//Et on l'affiche
                                writediv('<p>'+texte+'<p>', div);
                                writediv('', 'img-'+div);
                             }
                    }
            } else
                   writediv('Erreur lors de la lecture du message', div);

         }

    function file(fichier)
         { //Fonction de gestion des fichiers
         if(window.XMLHttpRequest) // FIREFOX
              xhr_object = new XMLHttpRequest();
         else if(window.ActiveXObject) // IE
              xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
         else
              return(false);
         xhr_object.open("GET", fichier, false);
         xhr_object.send(null);
         if(xhr_object.readyState == 4) return(xhr_object.responseText);
         else return(false);
         }
    </script>

J'accorde aux puristes du Javascript qu'il y a plus simple : modifier simplement le style du message en affichant ou cachant via du css...

J'espère que tu arriveras à t'en sortir avec les explications, sinon, redemmande moi si ce n'est pas clair ;).

Dès que la partie PHP sera ouverte, je posterais surement un tuto dessus ;)

 ++

    Matt

Malgon
Membre

Avatar de Malgon

Inscrit le 06 Mars 2008

51 messages
69 points

Profil Site Web

Posté le Marsdi 24 Juin 2008 à 20:14

salut,

ok, merci c'est bon :)

 @+

Malgon


Participer à cet échange :

Pour participer à cet échange, vous devez vous connecter.