Récupération valeur retour d'une fonction Javascript
Bonjour,
Je sollicite votre aide afin de comprendre un petit problème assez simple :
- j'ai une page JSP pour saisir des paramètres et un bouton de calcul qui affiche un résultat sur cette même page.
Les fonction Javascript associées au bouton sont les suivantes :
Code:
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
|
function calculerCo2(){
var distance = document.getElementById("distance").value;
var duree = document.getElementById("duree").value;
var co2 = Co2calc(distance, duree);
// alert("co2 : " + co2);
document.getElementById("co2").value = co2;
}
function Co2calc(dist, dur){
var request = null;
try {
request = new XMLHttpRequest();
}catch (e){
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
alert("XMLHttpRequest error: " + e);}
}
request.open("POST", "calculco2.calc");
var par= "distance=" + dist + "&" + "duree=" + dur;
request.setRequestHeader("Content-type", "application/x-www-form-
urlencoded");
request.send(par);
var calc_co2 = 0;
var resultat = 0;
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
resultat = request.responseText;
calc_co2 = Math.round(resultat*1000)/1000;}
};
// alert("calc_co2 : " + calc_co2);
return calc_co2;
} |
Le problème est que le résultat obtenu est égale à 0 dans ma page JSP.
Hors, si j'active les alert(), j'obtiens les messages suivant :
calc_co2 : 0
co2 : 4.09
et ma page JSP affiche bien le bon résultat (4.09)
Je n'y comprends plus rien.
Je pensais avoir bien codé la récupération de la valeur de retour de la fonction Co2calc() dans la variable co2.
Est-ce un problème de codage en Javascript ou de déclaration de variables ?
Je ne suis pas un expert en Javascript, mais j'ai codé comme les exemples trouvés sur lnternet.
Si vous pouvez m'aider à résoudre ce problème, je vous en remercie par avance pour vos réponses.
ejazz75
Récupération valeur retour d'une fonction Javascript
Merci Bovine pour ta réponse. J'ai bien lu ton lien.
Je comprends bien la "chronologie" des alert(), mais pourquoi je ne récupère pas le bon résultat au deuxième passage. L'affectation du résultat à la variable de retour est bien faite pourtant.
J'ai effectué le test en mode asynchrone ou synchrone, j'obtiens les mêmes résultats.
Que dois-je modifier dans mon code pour être propre et conforme aux règles de codage ?
Merci pour ton aide.
ejazz75
Récupération valeur retour d'une fonction Javascript
Je suis sincèrement désolé pour l'erreur de frappe concernant ton nom.
Ce n'est pas dans mon intention de t'insulter.
J'ai même testé le passage des variables en global, mais les résultats sont les mêmes. Alors comment faire pour que les fonctions attendent le retour de la requête AJAX pour continuer leur exécution. J'ai cru comprendre que cela se faisait sur le 3ème argument dans l'instruction request.open().
J'ai du faire toute les combinaisons de code pour récupérer le bon résultat, mais c'est un échec total depuis 2 jours!!!
Je peux comprendre que tu ne puisses pas m'orienter d'avantage, et je te remercie pour l'aide apportée jusqu'à maintenant.
ejazz75