Je ne sais pas si cela "fonctionne" ou pas, mais je conclus parce que le code affiché ici, fonctionne (sauf pour ce qui est dans le boucle (stupide DOM), mais ce n'est pas le but) seulement après deux clics. Je suppose que c'est parce qu'il n'obtient pas le document XML jusqu'à ce qu'il soit créé, ce qui est à la fin du premier clic.Utilisation de JavaScript et XHTML: open/send de XMLHttpRequest ne fonctionne pas si avant onreadystatechange
Cependant, si je devais mettre les méthodes XMLhttpRequest.open et XMLHttpRequest.send AVANT la fonction onreadystatechange, le code ne s'exécuterait pas dans l'instruction if imbriquée (celle qui vérifie readystate/status). J'ai testé ceci avec alert ou document.write.
Des idées sur ce qui ne va pas?
if (window.XMLHttpRequest)
{
var xmlhttp = new XMLHttpRequest();
}
function lessonList()
{
var xmldoc = xmlhttp.responseXML;
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var getTitle = xmldoc.getElementsByTagName('title');
var lessonList = document.getElementById('lesson-list');
for (i = 0; i < getTitle.length; i++)
{
var lessonTitle = document.createElement('li');
lessonTitle.nodeValue = getTitle[i].childNodes[0].nodeValue;
lessonList.appendChild(lessonTitle);
}
}
};
xmlhttp.open("GET", 'file.xml', true);
xmlhttp.send(null);
}
Merci d'avoir répondu à des questions que je n'ai même pas posées. Je pensais que les problèmes de DOM étaient trop souvent demandés et je passerais plutôt des heures à les travailler moi-même ... mais je suis passé à vos suggestions et en une seule sauvegarde, tout a fonctionné, travaillé, travaillé! Cela prendrait probablement quelques heures avant que je le fasse fonctionner, d'autant plus que la plupart des exemples en ligne utilisent innerHTML. Merci beaucoup! – Tarik