Bonjour,
Sur mon site OnPage, j'ai mis en place un chat.
On y accède on cliquant sur lien qui appelle une fonction affMessage() qui rend visible ou masque des div.
dans ce cas c'est le chat qui est affiché.
L'internaute clique sur une des photos disponibles sur le bord gauche et des messages (les messages en rapports avec la photo et les messages que l'utilisateur en cours écris) sont affichés dans un div.
puis il y a un div pour répondre
<textarea id="rep"></textarea>
Lorsque l'utilisateur réponds (donc qu'il a mis des informations dans le textarea, il clique sur le bouton répondre:
<input type="button" value="répondre" onClick="repondre('<%=rs("Photo1")%>', document.getElementById('recup').value, document.getElementById('PM').value)">
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
| function repondre(pho1, recup, PM){
var objxhr = xhr_connect()
if (objxhr){
objxhr.onreadystatechange = function(){
if (objxhr.readyState == 4) {
if (objxhr.status == 200) {
//var retour = objxhr.responseText
document.location = "indexRIE.asp?miseA=oui" + "&r=" + recup + "&PM=" + PM
}
}
}
}
R = document.getElementById("rep")
Rtext = encodeURIComponent(document.getElementById("rep").value)
RID = encodeURIComponent(document.getElementById("recup").value)
var str = "IDmembres="+RID+"&pho1="+pho1+"&Rtext="+Rtext
objxhr.open("Post", "../reponse.asp")
objxhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
objxhr.send(str)
R.value = ""
} |
le fichier reponse.asp enregistre la réponse dans une base de données
puis lorsque c'est terminé je recharge la même page avec des paramètres:
document.location = "indexRIE.asp?miseA=oui" + "&r=" + recup + "&PM=" + PM
et je test miseA:
1 2 3 4 5 6 7 8
| if miseA = "oui" then %>
<script>
affMessage();
PM = document.getElementById("PM").value
recup = document.getElementById("recup").value
loadFile("<%=PMa%>","<%=rs("ID")%>","<%=r%>");
</script><%
end if |
la fontion loadFile permet de récupérer le contenu des messages et de les assigner au div ayant l'ID message:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| function loadFile(arg, id, arg2) {
recup = document.getElementById("recup")
recup.value = arg2
PM = document.getElementById("PM")
PM.value = arg
var xhr = new XMLHttpRequest();
var value1 = encodeURIComponent(arg);
var value2 = encodeURIComponent(id);
var value3 = encodeURIComponent(arg2);
xhr.open('GET', 'messagesXML.asp?param1=' + value1 + '&id=' + value2 + '&id2=' + value3);
message = document.getElementById("message")
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
message.innerHTML = '<span>' + xhr.responseText + '</span>';
message.style.display = "block"
}
}
xhr.send(null);
} |
Ok, voici le fonctionnement général !
Maintenant, j'ai le même problème qu'avec mon message précèdent : ça fonctionne sur chrome (enregistrement du message, puis rechargement dans le div ayant l'ID message).
Dans Internet Explorer le message est enregistré mais le div n'est pas mis à jour.......
J'arrive à le mettre à jours si je clique sur le bouton actualiser
1 2 3 4 5 6 7 8 9
| <script>
function raf(){
location.reload(true)
}
</script>
<input type="button" id="reac" value="actualiser" onClick="raf()"> |
Lâ idem, j'aimerai supprimer dans Internet Explorer ce bouton actualiser
J'ai mis les fonctions XMLhttpRequest dans le header, j'ai essayé avec l'envoi synchrone (false) ou asynchrone (true) mais je ne suis pas arrivé au résultat recherché (c'est à dire à la mise à jour du div (id="message").
merci d'avance pour vos réponses !
Partager