Récupérer des données de PHP vers un fichier JS
Fermé
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
-
16 mai 2022 à 15:23
jordane45 Messages postés 38290 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2024 - 19 mai 2022 à 13:40
jordane45 Messages postés 38290 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2024 - 19 mai 2022 à 13:40
A voir également:
- Récupérer des données de PHP vers un fichier JS
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
17 réponses
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
16 mai 2022 à 15:42
16 mai 2022 à 15:42
Bonjour,
Commence par virer ton header... puisque tu veux retourner du JSON et non du HTML
ou change le en content json
Ensuite, pour voir si ça fonctionne il faut en effet regarder dans la console de ton navigateur
Pour ça, je t'invite fortement à utiliser firefox (qui est largement mieux pour débuguer l'ajax) et à bien penser à activer le debug du xhr
ça te permettra de voir tes "requêtes" passer .. et d'en voir les réponses ou les erreurs.
Au passage, pour récupérer du JSON en $.get il vaut mieux utiliser la fonction $.getJSON
Commence par virer ton header... puisque tu veux retourner du JSON et non du HTML
header('content-type:text/html;charset=utf-8');
ou change le en content json
Ensuite, pour voir si ça fonctionne il faut en effet regarder dans la console de ton navigateur
Pour ça, je t'invite fortement à utiliser firefox (qui est largement mieux pour débuguer l'ajax) et à bien penser à activer le debug du xhr
ça te permettra de voir tes "requêtes" passer .. et d'en voir les réponses ou les erreurs.
Au passage, pour récupérer du JSON en $.get il vaut mieux utiliser la fonction $.getJSON
$.getJSON("test.php?action=GetDataService", function(result){ $.each(result, function(i, field){ console.log(i,field); }); });
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
16 mai 2022 à 16:21
16 mai 2022 à 16:21
Merci beaucoup pour ta réponse mais rien ne change dans la console plus rien ne s'affiche.
Et je ne comprend pas ce que réalise le $.each (Ca permet de bouclé un object ? )
--test.js
--test.php
J'ai bien pensé à vider le cache.
Et je ne comprend pas ce que réalise le $.each (Ca permet de bouclé un object ? )
--test.js
$.getJSON("test.php?action=GetDataService", function (result) { $.each(result, function (i, field) { console.log(i, field); }); });
--test.php
<?php header('content-type:json;charset=utf-8'); session_start(); require_once '../php/config/config.php'; // Récupération des données services dans la BDD $select = $bdd->prepare('SELECT * FROM services WHERE token = :token'); $select->execute(array( 'token' => $_SESSION['user'] )); $service = $select->fetchAll(); echo json_encode($service); // Envoi des données services au format JSON ?>
J'ai bien pensé à vider le cache.
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
16 mai 2022 à 16:34
16 mai 2022 à 16:34
Tu peux tester avec $.ajax ?
et dans le php vire également le header.
NB: Attention, tes fichiers doivent être encodé en utf8 sans BOM
voir chapitre 1 ici : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (data) { console.log('data',data); }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX',jqXHR,textStatus); } });
et dans le php vire également le header.
NB: Attention, tes fichiers doivent être encodé en utf8 sans BOM
voir chapitre 1 ici : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
16 mai 2022 à 16:43
16 mai 2022 à 16:43
J'ai remplacer $.get par le $.ajax etc.
Et cette fois ci dans la console il y a empty comme au départ.
Résultat de la console :
--index.html
--test.js
--test.php
Et cette fois ci dans la console il y a empty comme au départ.
Résultat de la console :
--index.html
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Home</title> <!-- favicon --> <link rel="icon" type="image/png" href="../images/favicons/favicon.svg" /> </head> <body> <div id='all-card-services'> <p>Par default</p> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="test.js"></script> </body> </html>
--test.js
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (data) { console.log('data', data); }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX', jqXHR, textStatus); } });
--test.php
<?php session_start(); require_once '../php/config/config.php'; // Récupération des données services dans la BDD $select = $bdd->prepare('SELECT * FROM services WHERE token = :token'); $select->execute(array( 'token' => $_SESSION['user'] )); $service = $select->fetchAll(); echo json_encode($service); // Envoi des données services au format JSON ?>
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
16 mai 2022 à 16:56
16 mai 2022 à 16:56
Tu peux mettre l'URL directement dans ton navigateur et nous faire une capture écran du résultat ?
Il serait bien également d'arrêter/relancer ton serveur web
parfois il y a un cache qui gêne...
Il serait bien également d'arrêter/relancer ton serveur web
parfois il y a un cache qui gêne...
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
>
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
16 mai 2022 à 16:56
16 mai 2022 à 16:56
et puis, tu ne m'as pas dit .. tu as bien vérifié l'encodage de tes fichiers ? tu peux nous en mettre (les vérifications) des captures écran stp..
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
16 mai 2022 à 17:28
16 mai 2022 à 17:28
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
16 mai 2022 à 17:37
16 mai 2022 à 17:37
Comment se fait t'il que tu aies du Html dans la page appellée par ton ajax ??
Normalement, tu ne devrais y avoir que le code php que tu nous as montré avant...
Et pour ce qui est de vérifier l'encodage.. je t'ai donné un lien qui explique tout ..
L'as tu au moins regardé ???
Normalement, tu ne devrais y avoir que le code php que tu nous as montré avant...
Et pour ce qui est de vérifier l'encodage.. je t'ai donné un lien qui explique tout ..
L'as tu au moins regardé ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
16 mai 2022 à 17:42
16 mai 2022 à 17:42
Non j'ai pas du HTML dans la page appelé par le script.
J'ai 3 page :
Index.html -> div permettant d'afficher.
test.js --> avec la requete ajax
test.php -> avec le traitement
Oui j'ai regardé le lien, j'ai lu mais je ne voit pas ce qui me manque, j'ai supprimer le header() de tout a l'heure.
Je ne dois pas le remettre ?
J'ai 3 page :
Index.html -> div permettant d'afficher.
test.js --> avec la requete ajax
test.php -> avec le traitement
Oui j'ai regardé le lien, j'ai lu mais je ne voit pas ce qui me manque, j'ai supprimer le header() de tout a l'heure.
Je ne dois pas le remettre ?
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
16 mai 2022 à 17:45
16 mai 2022 à 17:45
Quand je t'ai demandé de tester l'url dans ton navigateur.. c'est celle appellée par ton ajax que je veux voir ...
là tu m'as montré un fichier test.html ..... moi c'est
test.php?action=GetDataService
là tu m'as montré un fichier test.html ..... moi c'est
test.php?action=GetDataService
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 09:34
17 mai 2022 à 09:34
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 13:50
17 mai 2022 à 13:50
C'est donc que tu dois avoir une erreur dans ton code... Ou un mauvais encodage du fichier.
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 14:14
17 mai 2022 à 14:14
Problématique tout ca ;)
Récap de toutes mes pages, je ne voit pas ou ca marche pas.
index.html
test.js
test.php
Récap de toutes mes pages, je ne voit pas ou ca marche pas.
index.html
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Home</title> <!-- favicon --> <link rel="icon" type="image/png" href="../images/favicons/favicon.svg" /> </head> <body> <div id='all-card-services'> <p>Par default</p> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="test.js"></script> </body> </html>
test.js
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (data) { console.log('data', data); }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX', jqXHR, textStatus); } });
test.php
<?php session_start(); require_once '../php/config/config.php'; // Récupération des données services dans la BDD $select = $bdd->prepare('SELECT * FROM services WHERE token = :token'); $select->execute(array( 'token' => $_SESSION['user'] )); $service = $select->fetchAll(); echo json_encode($service); // Envoi des données services au format JSON
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 15:47
17 mai 2022 à 15:47
Et l'encodage de ton fichier ???
J'attends toujours..
J'attends toujours..
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 15:52
17 mai 2022 à 15:52
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 17:32
17 mai 2022 à 17:32
Tu n'arrives pas à lire le lien que je t'avais donné ou tu ne comprends vraiment pas ??
Donc je te redonne le lien, en te disant qu'il faut regarder le chapitre 1
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Donc je te redonne le lien, en te disant qu'il faut regarder le chapitre 1
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 17:56
17 mai 2022 à 17:56
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 18:15
17 mai 2022 à 18:15
Essaye ça et dis nous ce que ça te donne
<?php //démarrage session session_start(); //affichage des erreurs PHP dans la page pour être sûr de ne rien laisser trainer... error_reporting(E_ALL); ini_set('display_errors', true); ini_set('display_startup_errors', true); require_once '../php/config/config.php'; //récupération PROPRE des variables AVANT de les utiliser $token = !empty($_SESSION['user']) ? $_SESSION['user'] : NULL; //on vérifie si on a bien un token avant de continuer ... if(!$token){ echo json_encode(['ERROR'=> "Aucun token présent....", 'SESSION'=>$_SESSION]); exit; } //préparation de la requête et des variables $sql = 'SELECT * FROM services WHERE token = :token'; $datas = [ 'token' => $token]; //exécution de la requête proprement... try{ $select = $bdd->prepare($sql); $select->execute($datas); $service = $select->fetchAll(); }catch(Exception $e){ echo json_encode(['ERROR'=> $e->getMessage()]); exit; } if(!empty($service)){ echo json_encode($service); // Envoi des données services au format JSON exit; }else{ echo json_encode(['ERROR'=>'AUCUN RESULTAT']); exit; }
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 18:52
17 mai 2022 à 18:52
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 18:59
17 mai 2022 à 18:59
Oups j'ai pas ajouté de donnée a la bdd.
Ducoup ca retourne
data [{"id_services":"1","0":"1","title_services":"Developpement Web","1":"Developpement Web","description_services":" manus comminus conserendas denseta scutorum conpage semet scientissime praestruebant, ausos quoque aliquos.","ionicons":"66","3":"66","token":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d","4":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d"},{"id_services":"2","0":"2","title_services":"Droniste","1":"Droniste","description_services":"zzzzzzzz.","ionicons":"67","3":"67","token":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d","4":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d"}]
Ducoup ca retourne
data [{"id_services":"1","0":"1","title_services":"Developpement Web","1":"Developpement Web","description_services":" manus comminus conserendas denseta scutorum conpage semet scientissime praestruebant, ausos quoque aliquos.","ionicons":"66","3":"66","token":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d","4":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d"},{"id_services":"2","0":"2","title_services":"Droniste","1":"Droniste","description_services":"zzzzzzzz.","ionicons":"67","3":"67","token":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d","4":"a6647700e19a93ebb5b7c32c3590875b0eca810791217bc99880d04126a2df3f9c8c3e1f2c4df6953bdd249f12d653692e12386f23772e3742cb402bf940f11d"}]
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 19:11
17 mai 2022 à 19:11
Et donc maintenant si tu fais ton appel en Ajax qu'as-tu dans la console du navigateur
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
17 mai 2022 à 19:22
17 mai 2022 à 19:22
Yes super dans la console je vois l'object :
Mais le soucis n'est pas réglé quand dans mon js j'essaye du coup d'afficher les informations, ça ne fonctionne pas ( undefined )
Quand j'essaye de ciblé une donnée :
ca trouve rien.
--index.js
le résultat du console log -> 'undefined'
J'aimerai maintenant afficher dans des cards les données mais j'arrive pas a les récupérer en js.
Désole je suis vraiment une dinde ;')
Mais le soucis n'est pas réglé quand dans mon js j'essaye du coup d'afficher les informations, ça ne fonctionne pas ( undefined )
Quand j'essaye de ciblé une donnée :
data.id_services
ca trouve rien.
--index.js
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (data) { console.log(data.id_services); // ici }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX', jqXHR, textStatus); } });
le résultat du console log -> 'undefined'
J'aimerai maintenant afficher dans des cards les données mais j'arrive pas a les récupérer en js.
Désole je suis vraiment une dinde ;')
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 19:29
17 mai 2022 à 19:29
Ton JSON contient PLUSIEURS lignes issues de ta bdd.
Il te faut donc BOUCLER dessus.
Il te faut donc BOUCLER dessus.
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
Modifié le 17 mai 2022 à 21:15
Modifié le 17 mai 2022 à 21:15
Yes j'ai regardé sur une boucle for qui boucle sur un object js, mais ducoup ca me coupe tout :
j'ai 2778 message dans la console.
Ca me découpe la chaine de caractère, 1 par 1
et voici le code qui permet de boucler ( je suis pas sur que ça soit le bon )
j'ai 2778 message dans la console.
Ca me découpe la chaine de caractère, 1 par 1
et voici le code qui permet de boucler ( je suis pas sur que ça soit le bon )
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (data) { for(var service of Object.getOwnPropertyNames(data)) { const Service = data[service]; console.log(service,":",Service); } }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX', jqXHR, textStatus); } });
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
Modifié le 17 mai 2022 à 21:22
Modifié le 17 mai 2022 à 21:22
Tu sais que je t'avais donné un exemple dans une de mes premières réponse ?
$.each(data, function (i, row) { console.log(i, row); // affiche une ligne //pour afficher un élément de cette ligne... console.log('service', row.id_services); });
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
Modifié le 17 mai 2022 à 21:26
Modifié le 17 mai 2022 à 21:26
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
17 mai 2022 à 21:34
17 mai 2022 à 21:34
Tu peux tester ça et me montrer ce que ça t'affiche dans la console ?
$.ajax({ url: 'test.php?action=GetDataService', type: 'GET', datatype: 'json', success: function (response) { console.log("response ajax",response); if (typeof(response) === "object" && response !== null) { console.log("OK, c'est bien du json.."); }else{ console.log("on le parse en json"); response = JSON.parse(response); } //on boucle dessus $.each(response,function(i,el){ console.log(i,el); }); }, error: function (jqXHR, textStatus, errorThrown) { console.log('Erreur AJAX', jqXHR, textStatus); } });
ScreamFR
Messages postés
73
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
19 mai 2022
3
19 mai 2022 à 12:36
19 mai 2022 à 12:36
jordane45
Messages postés
38290
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2024
4 704
19 mai 2022 à 13:40
19 mai 2022 à 13:40
Dans ce cas tu peux mettre la discussion en résolue...