Mon message concerne la portion de code au chapitre 5 (Mise en oeuvre d'Ajax) du livre, page 113.
Pour le tester, j'y ai simplement rajouté la ligne suivante :
<p><input type="button" value="Cliquez-moi !" onclick="executerRequete();" /></p>
Sommes-nous d'accord sur le fait qu'en l'état, le code ne fonctionne pas car la variable 'transport' créée dans executerRequete() n'est pas connue de changementEtat() ? Il faut alors "sortir" la ligne 'var transport = getXMLHttpRequest();' pour que sa portée soit globale au script, et que 'transport' ne soit plus "not defined" ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Vous avez tout à fait raison, une erreur s'est glissée dans le code de cette page. Deux possibilités s'offrent à vous. La première correspond à celle que vous mentionnez, à savoir rendre la variable transport globale au script:
<script type="text/javascript">
var transport = getXMLHttpRequest(); <----
La seconde consiste à définir la fonction changementEtat en tant que fonction anonyme dans la fonction executerRequete et, dans ce cas, la variable transport est alors visible de cette fonction:
<script type="text/javascript">
function getXMLHttpRequest() {
(...)
}
function executerRequete() {
var transport = getXMLHttpRequest();
Merci pour votre réponse et le lien.
J'attaque maintenant le chapitre 7 sur dojo et ne manquerai pas de vous faire part de mes interrogations si j'en ai !
--
Xavier
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour,
Mon message concerne la portion de code au chapitre 5 (Mise en oeuvre d'Ajax) du livre, page 113.
Pour le tester, j'y ai simplement rajouté la ligne suivante :
<p><input type="button" value="Cliquez-moi !" onclick="executerRequete();" /></p>
Sommes-nous d'accord sur le fait qu'en l'état, le code ne fonctionne pas car la variable 'transport' créée dans executerRequete() n'est pas connue de changementEtat() ? Il faut alors "sortir" la ligne 'var transport = getXMLHttpRequest();' pour que sa portée soit globale au script, et que 'transport' ne soit plus "not defined" ?
Bonsoir,
Vous avez tout à fait raison, une erreur s'est glissée dans le code de cette page. Deux possibilités s'offrent à vous. La première correspond à celle que vous mentionnez, à savoir rendre la variable transport globale au script:
<script type="text/javascript">
var transport = getXMLHttpRequest(); <----
function getXMLHttpRequest() {
(...)
}
function changementEtat() {
(...)
}
function executerRequete() {
transport.onreadystatechange = changementEtat;
transport.open("get", "donnees.html", true);
transport.send(null);
}
</script>
La seconde consiste à définir la fonction changementEtat en tant que fonction anonyme dans la fonction executerRequete et, dans ce cas, la variable transport est alors visible de cette fonction:
<script type="text/javascript">
function getXMLHttpRequest() {
(...)
}
function executerRequete() {
var transport = getXMLHttpRequest();
transport.onreadystatechange = function() { <----
(...)
};
transport.open("get", "donnees.html", true);
transport.send(null);
}
</script>
J'attire également votre attention que toutes les sources de l'ouvrage sont disponible en téléchargement à l'adresse suivante:
http://sourceforge.net/project/showfiles.php?group_id=171795&package_id=196420&release_id=475192
Merci de nous avoir remonté l'information!
Thierry
Bonjour,
Merci pour votre réponse et le lien.
J'attaque maintenant le chapitre 7 sur dojo et ne manquerai pas de vous faire part de mes interrogations si j'en ai !
--
Xavier