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] fonction php dans ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut [AJAX] fonction php dans ajax
    Bonjour, j'ai un problème pour faire fonctionner une fonction php dans ajax.
    Je voudrais que lorsque je ferme ma page web, un script s'exécute coté serveur pour supprimer des fichiers temporaires.

    J'ai intégré dans mon body de ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="js/recherche.js" charset="iso_8859-1"></script>
    <body onbeforeunload="delTmpFile();">
    dans mon recherche.js j'ai :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    function creerRequete()
    {
    	var requete = null;
     
        try
        {
            /* On tente de créer un objet XmlHTTPRequest */
            requete = new XMLHttpRequest();
        }
        catch (microsoft)
        {
            /* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
            try
            {
                requete = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch(autremicrosoft)
            {
                /* La première méthode a échoué, on en teste une seconde */
                try
                {
                    requete = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch(echec)
                {
                    /* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
                    requete = null;
                }
            }
        }
        if(requete == null)
        {
            alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
        }
     
    	return requete;
    }
     
    function delTmpFile()
    {
        /* On crée l'objet XHR */
        var requete = creerRequete();
        if (requete == null)
        {
            return;
        }
     
        /* Définition du fichier de traitement */
        var fonction = 'supression.inc';
     
        /* Envoi de la requête à la page de traitement */
        requete.open('GET', fonction, true);
     
        requete.send(null);
    }

    et dans ma page suppression.inc

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
     
    function delTmpFiles($numSession)
    {
        $numSession = sprintf("%'03.u", $numSession);
            $dir = "tmp/$numSession";
            // ajout du slash a la fin du chemin s'il n'y est pas
            if ( !preg_match( "/^.*\/$/", $dir ) )
            {
                    $dir .= '/';
            }
     
            // Ouverture du repertoire demande
            $handle = @opendir( $dir );
            
            // si pas d'erreur d'ouverture du dossier on lance le scan
            if( $handle != false )
            {
                    // Parcours du repertoire
                    while( $item = readdir($handle) )
                    {
                            if (($item != ".") && ($item != ".."))
                            {
                                    if ( is_dir( $dir.$item ) )
                                    {
                                            delTmpFiles( $dir.$item );
                                    }
                                    else
                                    {
                                            unlink( $dir.$item );
                                    }
                            }
                    }
                    // Fermeture du repertoire
                    closedir($handle);
            
            // suppression du repertoire
            $res = rmdir( $dir );
            }
            else
            {
                    $res = false;
            }       
            return $res;
    }
     
     
    ?>
    Désolé, je suis débutant en ajax (je sais que ma question doit être stupide...)
    Vous avez une idée de mon erreur ?

    Merci pour vos réponses.
    Cordialement.

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    C'est quoi l'erreur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut
    au départ il me disait object attendu,
    donc j'ai modifié dans mon body, ma fonction, j'ai mis : delTmpFile($numSession);

    Maintenant il me dit : $numSession indéfini.
    Il faudrait que je lui passe la valeur de $numSession du php au js (mais je ne sais pas comment faire.)

  4. #4
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Ce numéro de session, il correspond a quoi?

    Tu ne peux pas tout simplement aller le chercher dans ton php via le tableau $_SESSION ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut
    ce numéro correspond à un dossier temporaire que je créé.
    j'ai besoin de le récupérer ce numéro pour définir un chemin.

    En fait, quand l'utilisateur va fermer la page, je veux supprimer le dossier et tout son contenu généré lors du passage de l'utilisateur.

    Ma fonction php delTmpFiles supprime le dossier et son contenu. Seulement le nom du dossier varie, d'ou cette variable à récupérer.
    S'il existe une autre solution, je suis preneur

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Essaie de procéder comme suit:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onbeforeunload="delTmpFile(<?php echo $tonNumeroDeSession ?>);">

    Et ensuite, dans ta requete ajax, tu transmets ce numéro
    Code javascript : 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
    function delTmpFile(sessionId)
    {
        /* On crée l'objet XHR */
        var requete = creerRequete();
        if (requete == null)
        {
            return;
        }
     
        /* Définition du fichier de traitement */
        var fonction = 'supression.inc?sessionId=' + sessionId;
     
        /* Envoi de la requête à la page de traitement */
        requete.open('GET', fonction, true);
     
        requete.send(null);
    }

    Et coté php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    delTmpFiles($_GET["sessionId"])

Discussions similaires

  1. appel de fonction php dans une commande ajax
    Par thor76160 dans le forum jQuery
    Réponses: 8
    Dernier message: 26/03/2021, 14h36
  2. Réponses: 10
    Dernier message: 14/03/2009, 13h36
  3. [AJAX] requete php dans JavaScript
    Par juliens9 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/11/2007, 13h28
  4. [AJAX] [php] appel de fonction php dans evenement
    Par nicerico dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/11/2006, 12h01

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