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

JavaScript Discussion :

Requete Ajax vers Contrôleur PHP


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Requete Ajax vers Contrôleur PHP
    Bonjour,

    J'éprouve la plus grande difficultée à faire fonctionner une requête Ajax à destination d'un Controlleur écrit en php (j'utilise le modele MVC pour structurer mon code).

    Le contexte est le suivant :

    Je dispose d'une vue contenant un formulaire de connexion tout ce il y a de plus classique :

    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
     
    <div class="container">
      <section id="login" display ="block">
        <div class="row">
          <div class="col-md-4 col-md-offset-4">
            <form class="form-signin">
              <h2 class="form-signin-heading">Connectez-vous!</h2>
              <label class="sr-only" for="inputEmail">Login</label>
              <input type="text" class="form-control" autofocus="" required="" placeholder="Login" id="loginValue">
              <label class="sr-only" for="inputPassword">Mot de passe</label>
              <input type="password" class="form-control" required="" placeholder="Mot de passe" id="passwordValue"><br/>
              <button type="submit" class="btn btn-lg btn-primary btn-block" id="sendLogin">Se connecter</button>
            </form>
          </div>
        </div>
      </section>
     
    </div>
        <script src="JavaScript/jquery.js"></script>
        <script src="JavaScript/scriptLogin.js"></script>
        <script src="Bootstrap/js/bootstrap.min.js"></script>
      </body>
    </html>
    Lorsque l'on clique sur le button, une fonction écrite en Javascript se déclenche, son but est d'effectuer une vérification sur les inputs (assez sommaire pour le moment!) :

    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
     
    $(function() {
     $('#sendLogin').on('click', function(){
        var $login = $('#loginValue').val();
        var $password = $('#passwordValue').val();
        console.log(' '+$password+' '+$login);
     
        if($login != "" && $password != ""){
          console.log("Dans requete Ajax");
          $.ajax({
            type:'GET',
            url:'/Caribou/index.php',
            data:{
              action:'gestion',
              login:$login,
              password:$password,
            },
            success:function(response){
              console.log('youpieeeeeeeeeee!');
            },
            error:function(xhr, desc, err){
              console.log(xhr);
              console.log("Details : " + desc + "Error: " + err);
            }
          }); // fin Ajax
        }
     
      }); // fin onClick
    });
    le fichier index.php se présente comme suis (basiquement, son rôle est de rediriger vers le controlleur adéquat en fonction de la valeur du paramètre action):

    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
     
    <?php
     
      session_start();
     
      define('VIEW_PATH','Views/');
     
      require_once(VIEW_PATH . 'header.php');
     
      $action = (isset($_GET['action'])) ? htmlentities($_GET['action']) : 'default';
      var_dump($action);
      switch($action){
        case 'gestion':
          require_once('Controlelr/ControllerGestion.php');
          $controller = new ControllerGestion();
          $controller->run();
          break;
        default:
          require_once('Controller/ControllerConnexion.php');
          $controller = new ControllerConnexion();
          $controller->run();
      }
     ?>
    finalement, le controleur en tant que tel :

    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
     
    <?php
      class ControllerConnexion{
     
        public function __construct(){
     
        }
     
        public function run(){
          var_dump($_POST);
          if(!(empty($_GET['login']))){
            $notification = "dans if";
            var_dump($notification);
              header('Location: index.php?action=gestion');
              die();
          }
     
          require_once(VIEW_PATH . 'login.php');
        }
     
      }
     ?>
    Le problème est que je n'ai absolument aucun message d'erreur. Le seul "indice" que j'ai est mon url en rouge dans ma console, sans plus :
    Nom : erreurAjax.png
Affichages : 460
Taille : 16,3 Ko

    Si quelqu'un a une idée, je suis plus que preneur!

    En vous remerciant par avance

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 221
    Points : 15 512
    Points
    15 512
    Par défaut
    en cliquant sur la ligne en rouge, vous devriez avoir plus d'explications sur l'erreur qui se produit

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Pas vraiment en fait (où alors je ne suis pas capable de voir l'erreur). Dans tous les cas, j'ai oublié de poster les autres captures d'écran avec justement ce détail :

    Nom : detailErreurAjax0.png
Affichages : 397
Taille : 9,6 Ko

    Nom : detailErreurAjax.png
Affichages : 406
Taille : 16,9 Ko

    Nom : detailErreurAjax3.png
Affichages : 400
Taille : 13,4 Ko

    L'url me paraît bonne, les paramètres sont bien ceux qui ont été rentrés lors du login.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonjour,

    Tu peux toujours essayer de définir le dataType dans ta requête Ajax.

    Si tu déplies ton objet dans firebug, que contient-il?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé en spécifiant un datatype, mais rien n'y fait non plus.

    L'objet ne contient rien :

    Nom : objectErreurAjax.png
Affichages : 550
Taille : 15,4 Ko

    Je travail avec WampServer, se pourrait-il que le problème vienne de là?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Citation Envoyé par Braise Voir le message
    J'ai essayé en spécifiant un datatype, mais rien n'y fait non plus.

    L'objet ne contient rien :

    Nom : objectErreurAjax.png
Affichages : 550
Taille : 15,4 Ko

    Je travail avec WampServer, se pourrait-il que le problème vienne de là?
    Non du tout, aucun rapport.

    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
     if($login != "" && $password != ""){
          console.log("Dans requete Ajax");
          $.ajax({
            type:'GET',
            url:'/Caribou/index.php',
            data:{
              action:'gestion',
              login:$login,
              password:$password,
            },
            success:function(response){
              console.log('youpieeeeeeeeeee!');
            },
            error:function(xhr, desc, err){
              console.log(xhr);
              console.log("Details : " + desc + "Error: " + err);
            }
          }); // fin Ajax
    Enlève cette virgule déjà
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ce n'était pas ça non plus

    Quand je regarde l'onglet réseaux de la console, je m'aperçois que la requête ne "part" même pas.

    J'avais fait le test en supprimant le code javascript et en gérant donc l'appel directement avec le php lorsque l'on clique sur le bouton et cela a parfaitement marché.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    L'URL en rouge me fait penser au fait que tes paths sont pas bons, qu'il trouve pas le fichier.

    Débug ligne par ligne ton index.php, pour voir ou ça craque, en partant de la première ligne
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Le franc est finalement tombé!

    Je poste la réponse de Pitet qui a trouvé la source de l'erreur :

    L'option "persistant" aurait dû me mettre la puce à l'oreille, il semble effectivement que le problème vienne de là.

    Tu as surcharger l'action submit du formulaire pour réaliser ta propre requête via ajax, mais tu n'a pas désactiver l'action par défaut du formulaire qui consiste à effectuer une requête normale. Ton script doit donc s’emmêler les pinceaux en essayant de faire la requête ajax et d'envoyer le formulaire de manière classique en même temps.

    Essaye de modifier le début de ton code js comme ceci :
    $('#sendLogin').on('click', function(e){
    e.preventDefault();
    // suite de ton code
    Ceci devrait empêcher l'envoi classique du formulaire et ta requête ajax devrait alors fonctionner correctement.
    Dans tous les cas, un tout grand merci à vous pour l'aide

    Bonne journée!

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

Discussions similaires

  1. [AJAX] Requete Ajax Etape par etape vers PHP
    Par franquis dans le forum AJAX
    Réponses: 0
    Dernier message: 20/07/2011, 20h59
  2. [AJAX] Requete ajax vers servlet avec un forward
    Par freetala dans le forum AJAX
    Réponses: 0
    Dernier message: 10/05/2011, 13h09
  3. Réponses: 4
    Dernier message: 28/04/2010, 15h50
  4. [AJAX] Requete ajax vers serveur
    Par knebhi dans le forum AJAX
    Réponses: 2
    Dernier message: 23/03/2010, 17h24
  5. [AJAX] Requete ajax sur une meme page php
    Par Bownobo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/06/2007, 12h25

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