Ce code ne fonctionne que si async est défini sur false, pourquoi?Demande asynchrone Javascript ne fonctionne pas
var contact =
{
XMLHttp : null,
XMLDoc : null,
TXTDoc : null,
getData : function(dataSource)
{
contact.XMLHttp = new XMLHttpRequest();
contact.XMLHttp.open("GET", dataSource, false);
contact.XMLHttp.onreadystatechange = contact.storeData;
contact.XMLHttp.send(null);
},
storeData : function()
{
if(contact.XMLHttp.readyState == 4 && contact.XMLHttp.status == 200)
{
contact.XMLDoc = contact.XMLHttp.responseXML;
contact.TXTDoc = contact.XMLHttp.responseText;
}
},
displayData : function(elementID)
{
if(contact.TXTDoc != null)
document.getElementById(elementID).innerHTML = contact.TXTDoc;
else{
document.getElementById(elementID).innerHTML = "can't do it";
}
}
}
j'importer dans un document html comme ceci:
<head> <script type="text/javascript" src="contact.js"></script> </head>
et de l'utiliser comme ceci:
<body id="para"> <script type="text/javascript"> contact.getData("http://localhost/~olatunjigbadamosi/Books/contact.txt"); contact.storeData(); contact.displayData("para"); </script>
Que faire si je veux seulement affecter les réponses de 'XMLHttp' à' XMLDoc et TXTDoc' dans la fonction de rappel au lieu de les afficher? Mon approche qui consiste à insérer les instructions de 'storeData' dans une fonction anonyme attachée à' onreadystatechange' ne semble pas fonctionner. – Fortisimo
'contact.XMLHttp.onreadystatechange = contact.storeData' Définissez une autre méthode qui appelle à la fois storeData et displayData,' contact.ajaxCallback' ou quelque chose de ce genre. –