Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/04/2011, 07h55   #1
Invité régulier
 
Inscription : avril 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 23
Points : 7
Points : 7
Par défaut Executer de l'ajax à la fermeture d'une page

Bonjour,
J'essaie d'appeler mon script php depuis j'ajax qui se déclenche quand la fenêtre se ferme.

Code JS :
Code :
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
27
28
29
30
31
32
33
34
<script type="text/javascript">
        function getXhr(){
            var xhr = null;
            if(window.XMLHttpRequest) // Firefox et autres
                xhr = new XMLHttpRequest();
            else if(window.ActiveXObject){ // Internet Explorer
                try {
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
            }
            else { // XMLHttpRequest non supporté par le navigateur
                alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                xhr = false;
            }
            return xhr
        }
 
        function visiter()
        {
            var xhr = getXhr()
            xhr.onreadystatechange = function(){
                // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                }
            }
 
            xhr.open("GET","./controleur/regarde.php",true);
            xhr.send(null);
        }
        window.onbeforeunload = function (){visiter()};
    </script>
Code PHP :


Code :
1
2
3
4
5
6
<?php
session_start();
$requete = "update ....";
$result = $db->query($requete);
echo "FINIS";
?>
Donc logiquement je devrais voir apparaître "Finis" dans une boite de dialogue. Mais je ne recrois rien, et le update ne c'est pas fait non plus. Le problème viendrait donc du côté de l'ajax ...
myred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 09h36   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Bonjour,
Citation:
Envoyé par myred Voir le message
Donc logiquement je devrais voir apparaître "Finis" dans une boite de dialogue. Mais je ne recrois rien, et le update ne c'est pas fait non plus. Le problème viendrait donc du côté de l'ajax ...
la requête ce faisant en mode asynchrone, because le true dans
Code :
1
2
xhr.open("GET","./controleur/regarde.php",true);
xhr.send(null);
la fonction n'attend pas le retour de la requête, donc la fenêtre ce ferme, le retour ce fait donc dans le "vide".

Essaies de passer en mode synchrone, false, avec la syntaxe qui va bien, pas de fonction callback.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 08h28   #3
Invité régulier
 
Inscription : avril 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 23
Points : 7
Points : 7
Bonjour,
Même en changeant le mode, rien ne s'affiche et le update ne se fait pas.
J'ai essayé de mettre cet exemple dans une autre page sans code à côté et il fonctionne presque. Le onberforeunload est appelé au chargement de la page et non à la fermture.

Maintenant le problème c'est que je ne comprends pas pourquoi il affiche quelque chose quand il n'y a pas de code à coter. Le code JS lui est contenu dans un fichier.php que j'appel depuis mon index grâce à un include.
Voila ce que sa donne :
Index.php
include(Fichieravecl'ajax.php)
appel d'un autre fichier php grâce à l'ajax


Donc si quelqun y voit plus clair, merci de m'aider
myred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 18h33   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Citation:
Envoyé par myred Voir le message
J'ai essayé de mettre cet exemple dans une autre page sans code à côté et il fonctionne presque. Le onberforeunload est appelé au chargement de la page et non à la fermture.
visiblement tu as des erreurs dans ton(es) code(s), et un mauvaise conception...pas de raison que la fonction se déclenche TOUTE seule.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 10h03   #5
Invité régulier
 
Inscription : avril 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 23
Points : 7
Points : 7
J'ai finalement opté pour une autre solution.
Merci quand même.
myred est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h05.


 
 
 
 
Partenaires

Hébergement Web