IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Executer de l'ajax à la fermeture d'une page


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Points : 25
    Points
    25
    Par défaut [AJAX] 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    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

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    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.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    J'ai finalement opté pour une autre solution.
    Merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. executer un code js suite à la fermeture d'une page
    Par riadhhwajdii dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2009, 12h14
  2. [AJAX] Charger un module en même temps qu'une page
    Par Calvein dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 30/05/2008, 14h45
  3. [AJAX] Recherche de tutoriel pour ne pas recherger une page
    Par Gantilool dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/04/2008, 15h03
  4. [AJAX] Rafraichissement d'un fichier texte inclu dans une page
    Par gforce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/01/2007, 11h41
  5. Message d'erreur à la fermeture d'une page web
    Par WELCOMSMAIL dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 26/04/2006, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo