Bonjour,
Je me suis lancé dans mon premier script AJAX, j'attends un simple reponseText à afficher sur ma page.php, mais ma page reste sur "loading", comme si le serveur n'envoyait jamais la réponse.
Comme je n'ai pas de message d'erreurs à la génération de ma page, je ne sais pas où chercher, j'ai relus toutes mes lignes et je n'ai pas détecter d'erreur d'inattention (même si je la sent bien venir :-° )
Voici donc mon code (ceci étant mon premier script AJAX, si vous voyez des choses à éviter je vous serai reconnaissant de me les signaler !)
Mon arborescence:
./site
-connexion_db.php
./site/js
-liberation_creneau.js
-check_groupe_by_creneau.php
Mon appel html
Mon fichier liberation_creneau.js
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 <script type="text/javascript" src="./js/liberation_creneau.js"></script> ... <select id='jour_liberation' name='jour_liberation'> <option value="lundi">lundi</option> <option value="mardi">mardi</option> </select> <select id='creneau_liberation' name='creneau_liberation' onchange='request(readData);'> <option value="huitadix">8H-10H</option> <option value="dixadouze">10H-12H</option> </select> <li> <span id="loader" style="display: none;"><img src="./images/ajax-loader.gif" alt="loading" /></span> <span id="groupe_for_this_creneau"></span> </li>
Mon fichier de traitement: check_groupe_by_creneau.php:
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
56
57
58
59
60
61 function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else xhr = new XMLHttpRequest(); } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function request(callback) { var jour = document.getElementById("jour_liberation").value; var creneau = document.getElementById("creneau_liberation").value; var xhr = new getXMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { callback(xhr.reponseText); document.getElementById("loader").style.display = "none"; } else if (xhr.readyState < 4) document.getElementById("loader").style.display = "inline"; } xhr.open("GET", "check_groupe_by_creneau.php?Jour=" + jour + "&Creneau=" + creneau, true); xhr.send(null); } function write_div(_text) { var element = document.getElementById("groupe_for_this_creneau"); if (element != null) element.innerHTML = _text; } function readData(Sdata) { write_div('Le créneau sélectionné est actuellement occupé par le groupe:' + Sdata + '.'); }
Merci d'avance !
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 <?php $jour = htmlspecialchars($_GET['Jour']); $creneau = htmlspecialchars($_GET['Creneau']); include("connexion_db.php"); $requete_groupe = $bdd->query("SELECT groupe FROM creneaux WHERE jour='$jour' AND creneau='$creneau' AND attribution=1"); $requete_groupe->execute(); $donnees = $requete_groupe->fetch(); $requete_groupe->closeCursor(); if (!$donnees) echo "Aucun groupe sur ce créneau"; else echo $donnees['groupe']; ?>
EDIT:
Après avoir repéré des erreurs d'inatention j'ai édité le poste, et cette fois j'ai "Le créneau sélectionné est actuellement occupé par le groupe:undefined." et ce pour les deux cas, celui où il est censé trouvé un nom de groupe et celui où il est censé afficher "aucun groupe trouvé".
Partager