|
| fennec. | Posté le 02/09/2007 @ 17:25 |
Petit astucien
242 Messages
| Bonjour a tous, j'essaye de faire un calculatrice en jsp. j'ai une page jsp ou se trouve la calculatrice, un script en javascript (ajax) et une servlet. le problème est quand je clic 2 fois sur le même bouton (je veux tapez 77 avec la calculatrice) ie ne m'affiche que le premier 7. sous Firefox tout fonctionne correctement. après avoir rechercher j'ai réussi a trouver le problème mais pas la solution. voila le code qui posse problème if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById("zoneAffich").value = xhr.responseText; } ie n'exécuter qu'une seul fois ce qu'il ya dans le if lorsqu'on click plusieur fois sur la même touche de la calculatrice
|
| |
| |
| Publicité |
|
|
| don diego | Posté le 02/09/2007 à 19:21 |
Petit astucien
323 Messages
| Salut, Tu es dans le pire des problèmes : Des fois ça marche, des fois ça marche pas !!! Peut être que la deuxième fois que tu clique, les valeurs de xhr.readyState et/ou xhr.status ont changé de valeurs. Cela expliquerait pourquoi il n'affiche pas le 2ième '7'. |
| |
|
| fennec. | Posté le 03/09/2007 à 08:20 |
Petit astucien
242 Messages
| Merci beaucoup,
C’est ce que j'avais compris
J’espérai avoir une réponse du genre
"oui c'est encore un problème d'ie mais il y a moyen de le contourné"
une fois de plus nous pouvons remercier Microsoft de faire tout sont possible pour faire différemment des autres afin de nous compliqué la tache.
heureusement qu'ils sont la si non on s’ennuierai
Modifié par fennec. le 03/09/2007 08:26
|
| |
|
| don diego | Posté le 04/09/2007 à 18:27 |
Petit astucien
323 Messages
| Es-tu sûr que tu rentre bien dans ta fonction la 2ième fois? Es-tu sûr que tu arrives bien juste avant le if? Fais des affichages partout si nécessaire pour bien voir si qui se passe. Au pire montre nous plus de code. |
| |
|
| fennec. | Posté le 05/09/2007 à 09:05 |
Petit astucien
242 Messages
| bonjour,
voila mon javascript
function number(value) {
var xhr=null;
alert ("je suis dans number"); //test only
if (window.XMLHttpRequest) { // Objet de la fenêtre courant
xhr = new XMLHttpRequest(); // Firefox, Safari, ...
}
else if (window.ActiveXObject) { // Version Active X
xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer
}
xhr.onreadystatechange = function() { // instructions de traitement de la réponse
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
alert ("je suis dans onreadystatechange"); //test only
if(xhr.readyState == 4 && xhr.status == 200) {
alert ("value"); //test only
document.getElementById("zoneAffich").value = xhr.responseText; // on affiche les donnees recuperee sur la page web
}
};
xhr.open("GET", 'nbrTransitServlet?value=' + value, true);
xhr.send(null);
}
il m'affiche bien les 3 msg alert() lorsque je clique sur nu bouton de la calculatrice.
voila la methode get de ma servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value = request.getParameter("value");
HttpSession session = request.getSession(true);
String nbr = "";
if ((!(value.equals("*"))) & (!(value.equals("/"))) & (!(value.equals("-"))) & (!(value.equals("+"))) & (!(value.equals("=")))) {
if (session.getAttribute("S_nbr") != null) {
nbr = (String)session.getAttribute("S_nbr") + value;
session.setAttribute("S_nbr", nbr);
}
else {
session.setAttribute("S_nbr", value);
}
out.println((String)session.getAttribute("S_nbr"));
}
System.out.println("la variable de session : "+(String)session.getAttribute("S_nbr"));
System.out.println("la variable : "+ nbr);
}
sous Firefox =>
première exécution =>
la variable de session : 7
la variable :
deuxième exécution =>
la variable de session : 77
la variable : 77
sous IE 6 sp2 =>
première execution =>
la variable de session : 7
la variable :
deuxième exécution =>
il n'apelle pas la servlet
|
| |
|
| fennec. | Posté le 07/09/2007 à 09:42 |
Petit astucien
242 Messages
|
Bonjour a tous,
voila je vien de trouvé la solution a mon problème.
dans ajax j'utilise la méthode d'envoi par GET.
Firefox axept qu'on appelle plusieur fois la même page avec la même valeur dans l'url
ie ne l'axepte pas (on peut cliqué plusieur fois sur le même bouton la première fois il appelle la servlet, les autres fois non)
voici la solution
xhr.open("POST", 'nbrTransitServlet', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("value=" + value);
il suffisait tout simplement de passé la valeur par POST. pour la servlet il suffit de copier le code de la methode doGet ();
dans la méthode doPost (); |
| |
|
| don diego | Posté le 07/09/2007 à 17:40 |
Petit astucien
323 Messages
| Content que tu es pu trouver. Dernière suggestion : Ne recopie pas tout le code dans doPost mais appelle juste la méthode doGet dans doPost. |
| |
|
|
| Haut de la page |