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

trygelin 2 Messages postés mercredi 7 juin 2006Date d'inscription 25 août 2009 Dernière intervention - 25 août 2009 à 15:26 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 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

Répondre au sujet
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 25 août 2009 à 16:41
0
Utile
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
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 25 août 2009 à 17:40
0
Utile
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
trygelin 2 Messages postés mercredi 7 juin 2006Date d'inscription 25 août 2009 Dernière intervention - 25 août 2009 à 22:44
0
Utile
Merci de votre aide
En effet j'appelai la fonction sur
document.onunload
Commenter la réponse de trygelin
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 26 août 2009 à 13:21
0
Utile
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.