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 refresh d'une div


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut Ajax refresh d'une div
    J'essaye qu'une div se se rafraichisse toute les X secondes mais j'y arrive vraiment vraiment pas. J'ai chercher sur les forum mais je n'arrive jamais a adapter les scripts dans je viens chercher de l'aide.

    C'est en fait une page avec deux div.

    voila le code de ma page:

    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
    <script type="text/javascript" src="XHRConnection.js"></script>
     
    <script type="text/javascript">
     
    function remplirChamp1(obj) 
    {
    	document.getElementById('envoyer').innerHTML = obj.responseText;
    }
     
     
    function sendData1()
    {
    	var XHR = new XHRConnection();
    	XHR.appendData('Pseudo', document.getElementsByName('Pseudo')[0].value);
    	XHR.appendData('Message', document.getElementsByName('Message')[0].value);
    	XHR.sendAndLoad('sendforum.php', 'POST', remplirChamp1);
    }
     
    </script>
    Voila la premiere div:

    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
    <Div>
     
    <form name="formPost" method="post">
     
    Pseudo :<br>
    <input type="text" name="Pseudo" size=15 maxLength="25" /><br>
     
    Message :<br>
    <textarea type="text" name="Message" cols=60 rows=2></textarea><br>
     
    <img src="ok.gif" onclick="document.forms[0].reset()" />
     
    <img src="image/ok.gif" onclick="sendData1()" />
     
    </form>
     
    </Div>

    Et voila ma deusieme div, celle que je voudrais raffraichir toute les X secondes:


    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
    21
    22
    23
    24
    25
    26
    27
    <Div id="envoyer">
     
    <?php
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("bdd");
     
    $reponse = mysql_query("SELECT DATE_FORMAT(date,'le %d-%m-%Y &agrave; %H:%i') AS Date, Pseudo, Message FROM forum ORDER BY id DESC limit 0,10");
     
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
     
    <table><tr><td>
     
    <?php echo $donnees['Date']; ?><br>
    <?php echo $donnees['Pseudo']; ?><br>
    <?php echo $donnees['Message']; ?><br>
     
    </td></tr></table>
     
    <?php
    }
    mysql_close();
    ?>
     
    </Div>
    Ce code marche parfaitement mais la div ne se raffraichi que quand j'envoie un message. J'ai essayer avec un setTimeout mais j'y suis pas arriver.

    Quelqu'un peut-il m'aider svp ?

  2. #2
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    Comment as tu fait avec setTimeout ? Est ce que tu appelles sendData1 toutes les x secondes ?
    11001.00101.10010.10000.00111

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    Oui voila, comme senddata1 envoie a une page php et que cette page test si les champs sont vides ou pas, il n'y avait pas de probleme à appeler cette fonction.

    donc j'avais ca:

    <script>
    fonction refresh()
    senddata1();
    SetTimeout("refresh()", 5000);
    </script>

    et dans la page j'avais:

    <script>
    refresh();
    </script>

    Mais je dois mal m'y prendre parce que ca ne marche pas...
    Il y a une maniere plus simple en creans une autre fonction ?

  4. #4
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    setTimeout ne fait que différer l'exécution d'une fonction mais ne la répète pas. Il faut que la fonction se rappelle elle même pour perpétuer le rafraichissement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    setTimeout(refresh,5000); // lance la fonction une première fois ...
    function refresh() {sendData1();setTimeout(refresh,5000);} // ... puis la fonction se rappelle elle-même au bout de 5 secondes
    Fais attention, ton code est bourré d'erreurs :
    - 'function' et non 'fonction'
    - accolades autour du corps de la fonction refresh
    - 'setTimeout' et non 'SetTimeout'
    11001.00101.10010.10000.00111

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    Merci beaucoup, cela fonctionne. C'est sur que si je lance pas la fonction, elle se lancera pas toute seule.

    J'ai encore un probleme, relancant la fonction senddata1,si quelqu'un est en train d'ecrire, ca va partir.

    Pour bien faire il faudrait faire un fonction afficher qui n'envoie rien.

    Tu pourrais m'aider stp?

  6. #6
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    Rien de plus simple. Tu fais une fonction identique à sendData1 mais qui laisse pseudo et message vide (au lieu de les prendre dans les champs du formulaire).
    11001.00101.10010.10000.00111

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    J'ai donc ajouter ca sur ma page

    function afficher()
    {
    var XHR = new XHRConnection();
    XHR.appendData('Pseudo', document.getElementsByName('Pseudo')[0].value='');
    XHR.appendData('Message', document.getElementsByName('Message')[0].value='');
    XHR.sendAndLoad('sendforum.php', 'POST', remplirChamp1);
    }

    setTimeout(refresh,5000);
    function refresh()
    {
    afficher();
    setTimeout(refresh,5000);
    }

    </script>

    Bonne nouvelle, le code que tu m'as donne fonctionne parfaitement puisque le refresh se fait.

    Probleme, la div avec le formulaire se refresh aussi alors que le formulaire n'est pas dans la div id="envoyer"
    Resultat, plus possible d'ecrire puisque toute les 5 secondes les champs se vides...

  8. #8
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function afficher()
    {
    var XHR = new XHRConnection();
    XHR.appendData('Pseudo','');
    XHR.appendData('Message','');
    XHR.sendAndLoad('sendforum.php', 'POST', remplirChamp1);
    }
    11001.00101.10010.10000.00111

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    Se fut un peu difficile,

    merci beaucoup pour ta patience !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Empêcher un refresh sur une DIV
    Par anzize dans le forum AJAX
    Réponses: 1
    Dernier message: 02/06/2014, 07h59
  2. [AJAX] Actualisation d'une DIV
    Par NarOneR dans le forum AJAX
    Réponses: 4
    Dernier message: 30/01/2012, 14h23
  3. Refresh d'une div en ajax sans .load ni setTimeOut
    Par adrienanorm dans le forum jQuery
    Réponses: 6
    Dernier message: 05/11/2011, 09h20
  4. [ZF 1.10] Ajax : Mettre à jour une div de index.phtml
    Par arsene555 dans le forum Zend Framework
    Réponses: 5
    Dernier message: 26/11/2010, 11h53
  5. [AJAX] refresh d'une div
    Par lelapinrusse dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/03/2008, 14h47

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