Onunload: attendre la fin d'un echange ajax avnt de fermer la fenêtre? [Résolu]

Messages postés
2
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
25 août 2009
- - Dernière réponse : Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
- 26 août 2009 à 13:21
Afin de fermer une session, lors de changement de page, ou fermeture du navigateur je souhaite déclencher une requete AJAX:
j'ai écrit la procédure ainsi:
<script language="javascript">
function stop(){
if(window.XMLHttpRequest){requete= new XMLHttpRequest();}
else{if (window.ActiveXObject){requete= new ActiveXObject("Microsoft.XMLHTTP");}}
var appel="Sources/deconnect.php";
requete.open("GET",appel,true);//ouverture requête AJAX
requete.send(null);
requete.onreadystatechange=function(){}
}
</script>
Sous FF pas de problème cela fonctionne correctement par contre sous IE ça ne marche pas lors de la fermeture de IE, IE plante avec le message suivant: "IEXPLORE.EXE a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."
Afficher la suite 

4 réponses

Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
Bonjour,

déjà, j'éviterais le nom "stop" pour la fonction
c'est peut-être un nom réservé par IE ?

ensuite, cette fonction est appelée quand ?
onbeforeunload du body semble bien

peut-être aussi
requete.open("GET",appel,false);
requete.send(null); ou requete.send(""); ???
/*requete.onreadystatechange=function(){} */
}

mais, pas de raison à priori (?)

requete= new XMLHttpRequest(); est aussi valable pour IE
quelle version de IE au fait ?

Cordialement [mon Site] [M'écrire] Bul
Commenter la réponse de Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
ch'tiot exemple qui fonctionne sans soucis...

onbeforeunload.htm :
<html>


<script text=javascript">
window.onbeforeunload=function()
{ var xml=new XMLHttpRequest();
xml.open("get","onbeforeunload.php",false);
xml.send("");
alert(xml.responseText);
}
</script>
</html>

onbeforeunload.php :

<?php
echo 'tout va bien';
?>
Commenter la réponse de Bul3
Messages postés
2
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
25 août 2009
0
Merci
Merci de votre aide
En effet j'appelai la fonction sur
document.onunload
Commenter la réponse de trygelin
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
donc déjà rectifiez cela : ok.
mais
requete.open + requete.send + requete.onreadystatechange
ce n'est pas le bon ordre (!)
requete.onreadystatechange + requete.open + requete.send
ce sera plus sûr
et....
votre fonction stop() rend la main malgré tout !
sans rien attendre la fin de quoi que ce soit,
ça risque donc aussi de queuter dans certains cas.
Commenter la réponse de Bul3