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

Langage PHP Discussion :

Appel d'une fonction php en Ajax


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut Appel d'une fonction php en Ajax
    Bonjour,

    J'ai une page qui présente les différents comptes utilisateurs. En cliquant sur l'intitulé "statut actif" d'un utilisateur il est possible de le passer en "statut inactif" et inversement. Visuellement cela ne pose pas de problème, je change de classe css.
    Par contre je dois appeler une fonction php pour modifier son statut en base de données.

    J'ai fait un script Jquery ci-dessous :
    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
     
    function toggleAccountStatus(Id){
       var status = $('#'+Id).data('status');
     
       if(status == "Compte actif"){
          $('#'+Id).removeClass('badge bg-success float-end').addClass('badge bg-danger float-end');
          $('#'+Id).data('status', 'Compte inactif');
       }
       else{
          $('#'+Id).removeClass('badge bg-danger float-end').addClass('badge bg-success float-end');
          $('#'+Id).data('status', 'Compte actif');
       }
         $.ajax({
          type:"GET",
          url: 'index.php?action=toggleUserAccountStatus',
          cache: false,
          data: Id,
          dataType: "Json",
          success: function(msg){
     
         }
      });
     }
    J'essaie via Ajax d'accéder à ma page index qui contient un routeur qui lui redirige sur la bon fichier php en fonction du type d'action demandé.
    Je ne rentre même pas dans la page index.

    Quelqu'un aurait-il une idée?

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    pour suivre les appels AJAX, vous pouvez utiliser l'onglet "Réseau" de la console de développement de votre navigateur.
    par exemple avec Firefox, faites Ctrl + Maj + E
    https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau

  3. #3
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Merci pour ton aide Mathieu.

    J'ai bien un Etat "200 OK" dans l'onglet réseau lorsque je clique sur l'élément de ma page.
    Par contre l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     url: "index.php?action=toggleUserAccountStatus"
    passée dans l'Ajax n'est pas la bonne. C'est celle de la page courante qui est prise en compte.
    Comment cela se fait-il? Est-ce que je peux force qu'il prenne l'url Ajax?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    la paramètre "url" a l'air d'être bien placé dans votre code.

    est ce que le fichier index.php est bien dans le même répertoire que la page où vous appelez ce code ?

  5. #5
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Non, le fichier index.php se trouve 2 niveaux au dessus mais j'ai essayé avec un chemin absolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     url: "/index.php?action=toggleUserAccountStatus",
    et ça ne change rien.
    Je n'ai également pas de message d'erreur (fichier introuvable) dans la console.

    La redirection evrs la page index.php ne se fait visiblement pas.

  6. #6
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    J'ai fait en sorte de récupérer l'erreur, mais cela ne me dit pas grand chose.
    Visiblement j'ai bien une erreur dans la communication Ajax
    Nom : Ajax_Error.jpg
Affichages : 139
Taille : 28,3 Ko

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    Citation Envoyé par paintbox Voir le message
    j'ai essayé avec un chemin absolu
    dans ce cas, l'appel ne se fait pas vers le bon url quand vous regardez dans l'onglet réseau ?

  8. #8
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Oui l'url est correcte dans la fenêtre Réseau

    Nom : Url.jpg
Affichages : 164
Taille : 7,0 Ko

    Cela correspond bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $.ajax({
          type:"GET",
          url: 'index.php?action=toggleUserAccountStatus',
          cache: false,
          data: Id,
          dataType: "Json",
          success: function(msg){
     
         }

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    cliquez sur la ligne pour voir les détails de la requête.

  10. #10
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    J'ai ceci :
    Nom : Details.jpg
Affichages : 118
Taille : 93,4 Ko

  11. #11
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Est-ce que cela pose problème parce que je passe par un routeur qui redirige vers une fonction présente dans une Classe?

  12. #12
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    J'ai essayé en isolant la fonction dans un fichier séparé et en appelant directement ce fichier.
    Je ne passe plus de paramètre et fais directement l'update en indiquant l'id dans la fonction. Cela ne fonctionne pas.
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.ajax({
          method:"GET",
          url: "Library/ToggleUserAccount.php",  
          dataType: "json",
          success: function(success,status){  
             alert('Status : '+ status + success);        
         },
         error : function(xhr)
         {
            console.error("Error in Ajax communication for command");
            console.dir(xhr.responseText);
          }
      });

    La fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function ToggleUserAccount(){
        try {
        $id =23;
        $statement = DbConnect::Instance()->prepare("UPDATE useraccount SEt iduseraccountstatus=4 WHERE id= :id");
        $statement->bindParam(':id', $id, PDO::PARAM_INT);
     
        $resultat =$statement->execute();
        if (!$resultat) die("La requête a échouée");
     
        } catch (Exception $ex) {
            echo $ex.Message;
        }
        $statement->closeCursor();
    }
    Au niveau réseau il trouve bien la fonction (200 OK) et pas de message d'erreur à la console.

  13. #13
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    qu'est ce qui ne fonctionne pas ?
    dans la capture d'écran on ne voit pas le chemin qui est appelé. on ne peux pas vous aider si vous ne nous donnez pas toutes les informations.

  14. #14
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Le chemin? Tu parles de ceci?
    Nom : path.jpg
Affichages : 99
Taille : 68,2 Ko
    A noter que dans le code Ajax j'ai bien un statut Success qui est retourné mais l'update dans la base de données ne se fait pas.

  15. #15
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    oui voilà c'est la partie "filename" qui est la plus importante.
    est ce que ce chemin est correct ? il y a des grandes probabilité puisque il y a une réponse avec le code 200.

    si c'est le bon fichier, il faut alors débuger le code PHP pour voir à quel moment il y a le souci.
    là par exemple le code commence par une requête SQL donc on peut vérifier avec phpmyadmin que la requête fait bien la modification voulue.

  16. #16
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Oui le chemin est correcte.
    J'ai déjà testé le query Sql et il fonctionne parfaitement.
    Idem pour la connexion à la BD, c'est la même que j'utilise pour mes autres requêtes.

  17. #17
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    dans l'onglet réseau, regardez dans la partie "réponse" si vous voyez un des messages de votre code.

  18. #18
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Voici ce que j'ai dans la réponse:

    Nom : Response.jpg
Affichages : 110
Taille : 41,2 Ko

    Je n'y vois pas de message de mon code.

  19. #19
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Problème résolu.
    Erreur stupide j'ai oublié d'appeler ma fonction pour l'exécuter.
    Merci pour ton aide Mathieu

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/03/2009, 14h36
  2. Réponses: 6
    Dernier message: 07/06/2007, 15h27
  3. appel d'une fonction php à partir d'un bouton
    Par Jesmar dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 20h07
  4. [POO] problème d'appel d'une fonction php
    Par merlubreizh dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2007, 18h28
  5. Réponses: 3
    Dernier message: 06/11/2005, 19h02

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