Probleme avec JRQUERY et AJAX

saintache -  
 saintache -
Ci-dessous voici le code de ma fonction qui déclenche un appel AJAX
Comme vous pouvez le voir il y a une rubrique error qui déclenche une alert et une rubrique success qui en déclenche une autre
Problème Au départ je reçois bien alert('on démarre 04) mais AUCUNE des 2 alertes(soit error, soit success)
De même j'ai bien le message console de fin ajax
Mais que se passe-t-il entre les 2?. (Seul le résultat de monfichier-ajax.php est bien affiché )
Merci de vos lumières
Patrick
$(function(){
console.log('deb ajax');

alert("on démarre 04");
typfin='?';

$( ".eleve" ).click(function(){
$.ajax({
// chargement du fichier externe monfichier-ajax.php
url : "monfichiet-ajax.php",
type : 'GET',
data:param,
dataType: "html",
cache:false,
error : function(request, error) { // Info Debuggage si erreur
alert("Erreur : responseText: "+request.responseText);

},

// Passage des données au fichier externe (ici le nom cliqué)
success : function() {
alert("success");
// J'écris le résultat prénom de l'élève dans le h1
//$(#prenom_eleve).html("jules");
}
});
});

console.log('fin ajax typfin:' + typfin);

});

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Désolé au sujet des balises mais ni le triangle noir ni le <> rouge ne me donne le choix du langage alors je fais avec ce que j'ai !

    Alors dans ce cas (bien qu'étonnant.....) tu dois l'écrire toi même...
    par exemple (sans les espaces avant code et apres js
    < code js >
    //ici du code Javascript
    console.log("coucou");
    </code>
    Ce qui donnera
    //ici du code Javascript
    console.log("coucou");
    



    En ce qui concerne le debugage xhr je ne dois pas connaître toutes les subtilités je regarde simplement l'onglet debogueur dans firefox mais cela ne me donne rien ou je ne sais pas l'utiliser

    Ca c'est sûr....

    Il faut ouvrir la CONSOLE (javascript) du navigateur,
    Cocher la case xhr si elle n'est pas déjà cochée,

    Puis regarder, une fois que tu as appelé ton script ajax, ce qui s'y trouve



    En ce qui concerne ton code :
    Au niveau du Javascript, remplace le par:
    $(function(){
      console.log('La page est chargée....');
      
      // si on clique sur un élève :
      $( ".eleve" ).click(function(){
          var prenomclique = $(this).html();
          var param = {PrenomEleve:prenomclique };
          $.ajax({
            // chargement du fichier externe monfichier-ajax.php
            url : "monfichiet-ajax.php",
            type : 'POST',
            data:param,
            dataType: "json",
            cache:false,
            error : function(request, error) { // Info Debuggage si erreur
              console.log("Erreur Ajax",request,error);
              alert("Erreur : responseText: "+request.responseText);
            },
            success : function(reponse) {
              alert("success");
              console.log('Reponse ajax',reponse);
              if(typeof(reponse.prenom)!='undefined' && reponse.prenom!=null){
                // J'écris le résultat prénom de l'élève dans le h1
                $(#prenom_eleve).html(reponse.prenom);
              }else{
                alert('Erreur...' + reponse.error);
              }
            }
        });
      });
    
    };
    

    et pour le script PHP ajax
    <?php
    /**
    // fichier : monfichier-ajax.php
    */
    // on force la réponse en JSON
    header('Content-type: application/json');
    
    //Affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    //récupération PROPRE des variables AVANT de les utiliser:
    $PrenomEleve = !empty($_POST['PrenomEleve']) ? $_POST['PrenomEleve'] : NULL;
    
    
    //Traitement
    if($PrenomEleve){
      $result = array('prenom'=>$PrenomEleve);
    
    }else{
      $result = array('error'=>'Aucun prénom envoyé en paramètres...');
    }
    
    // on retourne les données:
    echo json_encode($result);
    
    


    1
    1. saintache
       
      Merci pour la rapidité.
      je vais essayer tout cela sous peu mais sans doute pas dès demain
      En tous cas je te tiendrai au courant
      Patrick
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Déjà... Bonjour !

    Ensuite, Je t'ai demandé à plusieurs reprises d'utiliser correctement les balises de code
    https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code ( il faut indiquer le LANGAGE dedans pour avoir la coloration syntaxique).

    Ensuite, Si tu ne vois rien dans ton ajax.. c'est que tu as certainement une erreur qui s'affiche dans la console Javascript.
    Je te recommande d'utiliser FireFox dont la lecture est plus simple pour ça.
    Il faut, bien entendu, activer le debugage xhr
    Et déplier les petites fleches devant les lignes pouvoir voir ce qui se passe

    0
    1. saintache
       
      Bonjour
      Désolé au sujet des balises mais ni le triangle noir ni le <> rouge ne me donne le choix du langage alors je fais avec ce que j'ai !
      Enfin j'utilise bien firefox
      Il n'y a strictement rien dans la console à part les messages consoles prévus dans le code
      En ce qui concerne le debugage xhr je ne dois pas connaître toutes les subtilités je regarde simplement l'onglet debogueur dans firefox mais cela ne me donne rien ou je ne sais pas l'utiliser
      Je suis surement simpliste mais je n'arrive pas à comprendre que je ne passe pas soit dans error soit dans success (à moins que mon code soit défectueux ?<souligne><souligne><souligne></souligne></souligne></souligne>
      ci-dessous monfichier.js / monfichier.php / monfichier-ajax.php

      monfichier.js=

      $(function(){
      console.log('deb ajax');

      alert("on démarre 04");
      typfin='?';


      $( ".eleve" ).click(function(){
      $.ajax({
      // chargement du fichier externe monfichier-ajax.php
      url : "monfichiet-ajax.php",
      type : 'GET',
      data:param,
      dataType: "html",
      cache:false,
      error : function(request, error) { // Info Debuggage si erreur
      alert("Erreur : responseText: "+request.responseText);
      typfin='e';
      },

      // Passage des données au fichier externe (ici le nom cliqué)
      success : function() {
      typfin='s'; // Informe l'utilisateur que l'opération est terminé et renvoie le résultat
      alert("success");
      // J'écris le résultat prénom de l'élève dans le h1
      //$(#prenom_eleve).html("jules");
      }
      });
      });

      console.log('fin ajax typfin:' + typfin);

      });

      monfichier.php =

      <body>
      <h1 id="prenom_eleve"> </h1>
      <p class="eleve"> Elève DUPONT </p>
      <p class="eleve"> Elève BARBIER </p>
      <script src="jquery.js"></script>
      <script src="monfichier.js"></script>
      </body>


      et enfin monfichier-ajax.php

      <?php
      // Accès à la base de données
      $PrenomEleve="Jules";

      // Ecriture de l'objet JSON contenant les infos qui vont être renvoyées
      header('Content-type: application/json');
      ?>
      {
      "PrenomEleve": "<?php echo $PrenomEleve;?>" //Attention à ne pas mettre de virgule
      }
      <?php
      exit(0);
      0