Bonsoir à vous tous amis développeurs ^^

Alors, voila le problème:
J'ai décidé de créer un petit système de chat pour un site quelconque, c'est la première fois que j'utilise vraiment de l'Ajax et j'ai donc bien trimé pour déja en arriver là : voir l'exemple

Comme vous pouvez le constater il marche, mais si vous consultez la console d'erreur, vous verrez que toutes les 5 secondes (fréquence de rafraichissement du chat), une erreur est créée.

si la table des messages est vide :
Erreur : aucun élément trouvé
Fichier Source : http://..........chat/getMsg.php
si elle contient des messages :
Erreur : données incompréhensibles après l'élément de document
Fichier Source : http://..........chat/getMsg.php
Code Source :
<div class="post1">…..
Mais je ne la comprends pas, d'autant plus que tout se passe exactement comme je le souhaite...

Voici ma méthode :
Quand le visiteur valide son message, je lance la procédure sendMessage() qui fait appel à un script php incluant le message dans la base de données.(jusque là tout va bien)

Au chargement de la page je lance la procédure qui récupère les messages dans la base de données toutes les 5 sec grâce à un autre script php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
function getChatData() {
  getXHR.onreadystatechange = getStatusChecker;
  getXHR.open('GET','chat/getMsg.php',true);
  getXHR.send(null);
  setTimeout(getChatData, 5000);
}
voici getMsg.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: text/xml; charset=UTF-8");
 
require_once("conf.php");
 
$sql->query("SELECT * FROM chat");
 
include_once("response.php");
?>
il fait appel à response.php qui met en forme et renvoie le résultat de la requete sql. response.php:
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
<?php
$reponse='';
$bool=0;
while ($row=$sql->fetch_row())
{
	$msg = $row['msg'];
	$name = $row['name'];
	$date = $row['date'];
	$msg = htmlspecialchars($msg);
	$name = htmlspecialchars($name);	
	$date= date('\[d\/m\]H\:i',$date);
	if($bool)$bool=0;
	else $bool=1;
 
	$reponse .='<div class="post'.$bool.'"><span class="date">'.$date.'</span>&nbsp;:&nbsp;<span class="name">'.$name.'</span><br /><span class="msg">'.$msg.'</span></div>';
}
echo $reponse;
?>
Quand les données sont arrivées je les inscris simplement dans ma div citée plus haut grace à innerHTML du div.

Voila n'hésitez pas à me demander des précisions sur le code,
en espérant que quelqu'un comprenne ce qui m'arrive, merci d'avance ^^