Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX] Minichat

Récupération des messages

Sujet résolu
    10 juin 2009 à 15:01:51

    Bonjour, je suis actuellement en train de réaliser un minichat en AJAX. Du côté de l'envoie des messages, tout va bien. C'est dans la récupération des messages que j'ai un problème.
    En réalité ce problème se situe sous IE8, car chez FF tout marche.

    var link_corps = document.getElementById('chat_corps');
    var xhr_getMessages = null;
    			
    function getMessages()
    {
         if(xhr_getMessages && (xhr_getMessages.readyState != 0 && xhr_getMessages.readyState != 4))
         {
              return;
         }
    			
         xhr_getMessages = getXMLHttpRequest();
    				
         xhr_getMessages.onreadystatechange = function()
         {
              if (xhr_getMessages.readyState == 4 && (xhr_getMessages.status == 200 || xhr_getMessages.status == 0))
              {
                   link_corps.innerHTML = xhr_getMessages.responseText;
              }
         }
    				
         xhr_getMessages.open('GET', 'minichat/getMessages.php', true);
         xhr_getMessages.send(null);
    }
    			
    setInterval('getMessages()', 5000);
    


    Ci-dessus le code que j'utilise pour mettre à jour les messages.
    Mon problème :
    - Sous FF, si un message est ajouté, très bien il l'affiche.
    - Sous IE8 par contre lorsque qu'un message est ajouté (après le chargment de la page) rien ne se passe.
    En fait, pour tester j'ai fait un alert(); de xhr_getMessages.responseText; et il me rend toujours le même résultat.
    Pour mettre à jour les messages avec IE8, il faut fermer la page et la rouvrir.

    Je n'ai pas de réel idée sur l'origine de ce bug, si vous pouviez m'éclairer.

    Merci d'avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2009 à 15:09:16

      function getMessages(){
      	var xhr_getMessages=getXMLHttpRequest();
      	xhr_getMessages.onreadystatechange=function(){
      	if (xhr_getMessages.readyState==4 && (xhr_getMessages.status==200 || xhr_getMessages.status==0)){
      		document.getElementById('chat_corps').innerHTML=xhr_getMessages.responseText;
      	}
      	xhr_getMessages.open('GET','minichat/getMessages.php',true);
      	xhr_getMessages.send(null);
      }
      setInterval(getMessages,5000);
      


      A première vue, pas de raison que ça marche mieux, j'ai juste rendu le code un peu plus propre (en enlevant les trucs inutiles, et en mettant des syntaxes plus propres), mais essais quand même, on ne sait jamais :p
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2009 à 15:27:02

        Ah bah chacun sa façon de coder ^^. Avec ton code : pas de changement.
        J'ai fait un second test :

        1 ==> Je charge la page normalement.
        2 ==> Je change la requête SQL récupérant le message ayant pour id = 6 au lieu de tout les messages ayant un id < 10.
        3 ==> J'actualise la page et observe le résultat.

        Résultat :

        C'est très étrange il m'a afficher les messages comme si je n'avais pas modifié la requête SQL. En gros, au lieu de m'afficher le message ayant pour id = 6, il m'a affiché les messages ayant un id < 10. J'ai l'impression qu'il ne met pas à jour le résultat de la requête vers le fichier.


        Je comprend pas là.
        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2009 à 21:32:38

          Résolue, IE8 n'aime pas les requêtes de type GET. ^^
          • Partager sur Facebook
          • Partager sur Twitter

          [AJAX] Minichat

          × 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