Bonjour,
Je développe une application web en java. Dans une de mes jsp (assez grosse) j'utilise Ajax pour récupérer certains éléments sans recharger la page.
Dans le cas présent, lorsque l'utilisateur change un contributeur (contributorid), je veux que le champ langue soit également modifié (languageid). Donc quand on change le contributeur dans une liste, au "onchange", la fonction "setLanguage" suivante est appelée. Voici le code :
Les 2 premiers appels à cette fonction fonctionnent normalement : la nouvelle langue affichée (newlanguageid) correspond bien au contributeur sélectionné et le "alert" le confirme. Je peux également le vérifier grace aux traces affichées dans la classe appelée (bookcontributor.do?). Mais lors du troisième (??) appel, je n'ai plus de traces même si la langue continue d'être modifiée quand on change le contributeur (le "alert" continue d'être appelé). C'est comme si la requête n'était plus envoyée au serveur (ce qui d'ailleurs se confirme si je change la langue associée au nouveau contributeur directement dans la base de données : la langue qui s'affiche alors n'est pas cette nouvelle langue mais l'ancienne !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 var xhr0; function setLanguage(contributorid) { if (window.XMLHttpRequest) { xhr0 = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr0 = new ActiveXObject("Microsoft.XMLHTTP"); } xhr0.open("GET", 'bookcontributor.do?actionType=SETLANGUAGE&contributorid='+contributorid); xhr0.onreadystatechange = function() { setNewLanguage(xhr0); }; xhr0.send(null); } function setNewLanguage(xhr) { if(xhr.readyState == 4){ newlanguageid = xhr.responseXML.getElementsByTagName('newlanguageid')[0].firstChild.nodeValue; alert("languageid : "+newlanguageid); document.forms[0].elements["languageid"].value=newlanguageid; } }
C'est comme si l'objet xhr était gardé en mémoire et que la réponse envoyée était toujours la même, alors que la requête n'est plus envoyée au serveur.
Cela est-il possible ?
J'espère que mon problème est assez clairement expliqué et que quelqu'un pourra m'aider parce que là, je ne vois pas du tout !
Merci par avance.
Partager