Bonjour,
je débute avec la classe XMLHttpRequest, et maintenant il faut que j'utilise la propriété responseXml pour gérer la réponse en xml.
responseText est contient bien ce que le serveur renvoit, par contre responseXml est null. Voici ce que la console d'erreur d'opéra m'indique:
et celle de firefox:
Pourtant le fichier php que j'ai créé sur le serveur me renvois bien du xml. Voici un exemple de code qu'il renvoit:
<?xml version="1.0" encoding="utf-8"?>
<tchat><message date="1152726900" author="Will">Ceci est un essai !</message><message date="1152727800" author="Benoit">Je vois ça</message><message date="1152800000" author="Will">encore un test</message><message author="Will" date="1172578968">ceci est un test</message><message author="Will" date="1172579508">nkj,njk</message><message author="Will" date="1172580132">test</message><message author="Will" date="1172580572">test</message><message author="Will" date="1172580680">jjkbn</message></tchat>
Et Firefox le voit bien comme un fichier xml, d'ailleur l'entête http est bien "Content-Type: text/xml".
Voici le javascript:
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| function cytchat_read_messages()
{
var test_requete = null;
if (window.XMLHttpRequest)
test_requete = new XMLHttpRequest();
else
{
if (window.ActiveXObject)
test_requete = new ActiveXObject("Microsoft.XMLHTTP");
}
if (test_requete != null)
{
var tchat_zone = document.getElementById("cytchat_tchat_zone");
var nb_message = document.getElementById("cytchat_tchat_zone").childNodes.length;
if (nb_message > 0)
{
nb_message = nb_message / 2;
}
test_requete.onreadystatechange = function ()
{
if (test_requete.readyState == 4)
{
tab_messages = test_requete.responseXml.getElementsByTagName("message");
for (i=0 ; i < tab_messages.length ; i++)
{
message_author = tab_messages[i].getAttribute("author");
message_dialog = tab_messages[i].firstChild.nodeValue;
new_message = document.createTextNode(message_author + " : " + message_dialog );
separator = document.createElement("br");
tchat_zone.appendChild(new_message);
tchat_zone.appendChild(separator);
}
}
};
previous_message = nb_message - 1;
test_requete.open("GET", "http://localhost/tchat.php?action=read&previous=" + previous_message, true);
test_requete.send(null);
}
} |
la ligne sur laquelle ça coince c'est donc celle-ci:
tab_messages = test_requete.responseXml.getElementsByTagName("message");
Apprement responseXml est vide.
Partager