[AJAX] [Firefox] send n'est pas appelée tout le temps
Bonjour,
Je suis débutante en Ajax.
J'ai créé une classe Pack avec sa méthode CalculPrix. Elle doit envoyer une requête vers un script php qui me renvoie le prix.
Une fonction PrixPack permet d'appeler cette méthode pour tous les packs initialement créés.
Sous IE, tout ce passe normallement : il m'alerte les bons prix.
Sous Firefox, il ne veut envoyer la requête que pour le dernier objet Pack, et donc ne m'alerte que le dernier prix.
Quand je fais une alert après send (pour connaire readyState), là, firefox alerte tous les prix demandés...
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
|
/**
BUT : calcule le prix d'un pack et le stocke dans sa propriété prixSpp et prixPublic
*/
Pack.prototype.CalculPrix = function (station,nbjours,chaussures)
{
objXMLHR = createXMLHttpRequest();
objXMLHR.open('get','scripts/prix/prix.php?station='+station+'&nbjours='+nbjours+'&pack='+this.code+'&chaussures='+chaussures, true);
var pack = this;
objXMLHR.onreadystatechange = function()
{
if(objXMLHR.readyState ==4)
{
alert(objXMLHR.responseText);
}
}
objXMLHR.send(null);
//alert(objXMLHR.readyState);
}
/**
BUT : calcule les prix de tous les packs
*/
function PrixPacks(station,nbjours,chaussures)
{
PackExpert.CalculPrix(station,nbjours,chaussures);
PackPremium.CalculPrix(station,nbjours,chaussures);
PackClassic.CalculPrix(station,nbjours,chaussures);
PackSA.CalculPrix(station,nbjours,chaussures);
PackJunior.CalculPrix(station,nbjours,chaussures);
PackSJunior.CalculPrix(station,nbjours,chaussures);
PackKid.CalculPrix(station,nbjours,chaussures);
} |
Merci d'avance
Bonne journée
comment demander d'attendre ?
Merci de ta réponse.
J'ai réussis à faire ça en mode synchrone, effectivement, ça marche bien.
L'inconvénient, c'est qu'en attendant la réponse, le navigateur est bloqué (normal) mais du coup, pour l'utilisateur, c'est pas très fluide.
Quelqu'un connait un autre moyen ?
Je mets quand même mon code en mode synchrone pour ceux qui aurait le même problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Pack.prototype.CalculPrix = function (station,nbjours,chaussures)
{
objXMLHR = createXMLHttpRequest();
objXMLHR.open('get','scripts/prix/prix.php?station='+station+'&nbjours='+nbjours+'&pack='+this.code+'&chaussures='+chaussures, false);
objXMLHR.send(null);
pack.prix = objXMLHR.responseText;
} |
merci quand même
Bonne journée