Si vous utilisez le code exact sur cette page, ce n'est pas surprenant, car l'exemple utilise une seule variable globale pour stocker le XMLHttpRequest. Il n'y a donc aucun moyen de le faire pour plusieurs requêtes simultanées: l'appel de la fonction une seconde fois écrase le req
avec un nouveau, ce qui fait que la req
lue par ahahDone
est la mauvaise requête.
Si vous souhaitez autoriser cela, vous devrez faire req
une variable locale (en le déclarant var
en function ahah()
), et le transmettre avec le target
à la fonction ahahDone()
. Ou tout simplement le faire en ligne:
function Element_loadHTML(element, url) {
var req= null;
if (window.XMLHttpRequest) {
req= new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
req= new ActiveXObject('MSXML2.XMLHttpRequest');
} catch() {}
}
if (!req) {
element.innerHTML= 'Browser does not support XMLHttpRequest';
return;
}
element.innerHTML= 'Loading...';
req.onreadystatechange= function() {
if (req.readyState===4)
element.innerHTML= req.status===200? req.responseText : 'Error '+req.status;
};
req.open('GET', url);
req.send(null);
}
Element_loadHTML(document.getElementById('appdata'), 'appdata.part.html');
Element_loadHTML(document.getElementById('foo'), 'bar.part.html');
Les trucs avec le navigateur renifler et d'essayer d'exécuter des balises de script est sans espoir et brisé; ne l'utilisez pas. Il n'est pas recommandé de charger le contenu de l'élément <script>
dans la page.
PREFECT, je ne sais pas pourquoi je n'ai pas vu ça avant. Je vous remercie! En outre, je n'utilise pas la partie d'exécution de balise de script. C'est vraiment une mauvaise idée. – Matt