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
Dernière intervention
25 août 2009
- - Dernière réponse : Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
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 

Votre réponse

4 réponses

Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Dernière intervention
2 février 2015
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
Dernière intervention
2 février 2015
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
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
Dernière intervention
2 février 2015
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.