Partage
  • Partager sur Facebook
  • Partager sur Twitter

[xmlhttprequest] : Problème de script qui ne s'arrête pas

Sujet résolu
    31 janvier 2006 à 19:54:18

    Bonjour à tous.

    Je débute dans l'utilisation de l'AJAX. Voilà mon problème :

    J'ai créé une page qui est censée "inclure" (avec de l'AJAX) une autre page qui contient les messages d'une table (pour un chat).


    Mais seulement le problème c'est que j'ai l'impression qu'une boucle ne sarrête pas !


    Au chargement de la page, le script est executé et le chargement ne s'arrete pas et tout ce qui est après le javascript n'est pas affiché.

    J'espère avoir été assez clair, vous verrez sinon mieux avec les deux codes :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
        <head>

            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    </head>
    <body onLoad="messages();">

    <script language="JavaScript">
    function messages() {

    var xhr_object = null;

    if(window.XMLHttpRequest) { xhr_object = new XMLHttpRequest(); }

    else if(window.ActiveXObject) {xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }

    else
    {
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }
     
    xhr_object.open("POST", "messages.php", true);
     
    xhr_object.onreadystatechange = function() {
       
    if(xhr_object.readyState == 4) { document.write(xhr_object.responseText) ; }

    }
     
    xhr_object.send(null);

    setTimeout("messages()", 1);

    }
    </script>

    </body>
    </html>


    Voilà pour l'affichage, et maintenant la page message qui contient les messages de la table :

    <?php

            mysql_connect("localhost", "root", "");

            mysql_select_db("forum");

            $retour = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,30");

            mysql_close();
           
    while($chat = mysql_fetch_array($retour) ) {

    echo $chat['pseudo'] .'dit :  '. $chat['message'] .'<br/>' ;

    }

    ?>


    Voilà j'espère que problème a été assez clair,

    Merci d'avance.

    PS : J'espère aussi avoir posté dans le bon forum :p
    • Partager sur Facebook
    • Partager sur Twitter
      31 janvier 2006 à 19:57:50

      setTimeout("messages()", 1);


      Je crois que setTimeout prends des millisecondes en arguments.Ce qui risque de poser problème si c'est le cas...
      • Partager sur Facebook
      • Partager sur Twitter
        31 janvier 2006 à 20:19:52

        Merci pour t'as réponse mais le problème ne vient pas de là car j'ai déjà essayé de mettre 1000 et ça ne change absolument rien... je comprend pas d'où ça viens, j'ai commencé l'ajax aujourd'hui et c'est mon premier script.
        • Partager sur Facebook
        • Partager sur Twitter
          31 janvier 2006 à 20:31:29

          arf meme moi je l'ai loupé....c'est

          window.setTimeout(..)


          et met 1000 parce que 1 ca pose clairement problème...
          • Partager sur Facebook
          • Partager sur Twitter
            31 janvier 2006 à 21:29:04

            j'ai essayé 1000 mais ça marche toujours pas :(
            • Partager sur Facebook
            • Partager sur Twitter
              31 janvier 2006 à 22:00:51

              Bonjour(soir?),
              Pourquoi tu mets un document.write ?
              Essaye plutôt de faire un div avec un id genre <div id="messages">
              Et à la place de document.write, tu mets :
              document.getElementById('messages').innerHTML = xhr_object.responseText;

              He puis, ta fonction est vraiment aps propre.
              Soit tu détruit l'interval avec clearInterval(indentifiant); où indentifiant est l'indentifiant de l'intervale (genre var id_int = setInterval) PUIS tu refais un setInterval (ou setTimeout, c'est pareil).
              Soit, tu le met en dehord de la fonction.
              Je doute que les navigateurs suportent une telle pile de récurcivité en javascript...



              Bisous, Nyu
              • Partager sur Facebook
              • Partager sur Twitter
                1 février 2006 à 12:28:26

                Merci beaucoup pour tous ces renseignements ça marche ! :)

                Le code final pour les prochains visiteurs comme moi :D (au passage si vous avez d'autres remarques parceque j'ai pas tout saisi sur le clearinterval :-° ) :

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
                    <head>

                        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

                </head>
                <body onLoad="messages();">

                <div id="messages" ></div>


                <script language="JavaScript">
                function messages() {

                var xhr_object = null;

                if(window.XMLHttpRequest) { xhr_object = new XMLHttpRequest(); }

                else if(window.ActiveXObject) {xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }

                else
                {
                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                }
                 
                xhr_object.open("POST", "messages.php", true);
                 
                xhr_object.onreadystatechange = function() {
                   
                if(xhr_object.readyState == 4) { document.getElementById('messages').innerHTML = xhr_object.responseText;  }

                }
                 
                xhr_object.send(null);
                 
                setTimeout('messages();', 1000) ; //Ici changer 1000 par le nombre de millisecondes

                }
                </script>

                </body>
                </html>


                Et voilà ! merci beaucoup encore !

                • Partager sur Facebook
                • Partager sur Twitter

                [xmlhttprequest] : Problème de script qui ne s'arrête pas

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown