Probleme avec JRQUERY et AJAX

Fermé
saintache - 4 mai 2020 à 14:55
 saintache - 4 mai 2020 à 20:36
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 5 mai 2020 à 10:31
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
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 mai 2020 à 15:01
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
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