[jQuery et PHP] Array d'objet en JSON ?
Résolu
Skysor
-
skysork -
skysork -
Bonjour,
Tout d'abord désolé je ne savais pas si je devais poster ce sujet dans PHP ou Javascript, vu que ma question concerne les deux:
Je suis débutant à ajax et n'y connais vraiment pas grand chose. Voila mon problème
-J'aimerais récupérer un array d'objets 'Article' (chaque article a un id, titre, lien, text, date, etc ...) depuis une reqûete ajax (donc vers depuis script PHP) et le recevoir dans ma fonction $.get jQuery, j'ai pensé que je devais utiliser le format JSON ? mais je n'y connais strictement rien a JSON: comment convertir un array d'objets Article en JSON, les récupérer en jQuery et les utiliser ?
Voici mon code:
Fonction jQuery:
Script PHP appelé:
Merci beaucoup pour votre aide !
Tout d'abord désolé je ne savais pas si je devais poster ce sujet dans PHP ou Javascript, vu que ma question concerne les deux:
Je suis débutant à ajax et n'y connais vraiment pas grand chose. Voila mon problème
-J'aimerais récupérer un array d'objets 'Article' (chaque article a un id, titre, lien, text, date, etc ...) depuis une reqûete ajax (donc vers depuis script PHP) et le recevoir dans ma fonction $.get jQuery, j'ai pensé que je devais utiliser le format JSON ? mais je n'y connais strictement rien a JSON: comment convertir un array d'objets Article en JSON, les récupérer en jQuery et les utiliser ?
Voici mon code:
Fonction jQuery:
function loadArticles(type, cat, filter, order, nb, from) { $.get('./?ajax=loadArticles', { type: type, cat: cat, filter: filter, order: order, nb: nb, from: from }, function(data) { }, 'text'); }
Script PHP appelé:
<?php // verification des variables if(isset($_GET['type']) && isset($_GET['cat']) && isset($_GET['filter']) && isset($_GET['order']) && isset($_GET['nb']) && isset($_GET['from'])) { list($type, $cat, $filter, $order, $nb, $from) = 0; if($_GET['type'] === ('astuce'||'news'||'all')) { $type = $_GET['type']; } if($_GET['cat'] === ('windows'||'graphics'||'hardware'||'software'||'programming'||'linux'||'security'||'highTech'||'videogames'||'internet'||'smartphones')) { $cat = $_GET['cat']; } if($_GET['filter'] == ('views'||'date_created'||'date_modified')) { $filter = $_GET['filter']; } if($_GET['order'] == ('croi'||'desc')) { $order = $_GET['order']; } if(is_int($_GET['nb']) && $_GET['nb'] > 0) { $nb = $_GET['nb']; } if(is_int($_GET['from']) && $_GET['from'] >= 0) { $from = $_GET['from']; } if($articles_manager->count() > 0) { $articles = $articles_manager->get_articles($type, $cat, $filter, $order, $nb, $from); // on sécurise if(isset($articles) && !empty($articles)) { foreach($articles as $art) { $art->set_type($tools->secure_code($art->type(), 2)); $art->set_category($tools->secure_code($art->category(), 2)); $art->set_title($tools->secure_code($art->title(), 2)); $art->set_link($tools->secure_code($art->link(), 2)); $art->set_text($tools->secure_code($art->text(), 1)); $art->set_pseudo_creator($tools->secure_code($manager->get_user($art->id_creator())->pseudo(), 2)); } } } }
Merci beaucoup pour votre aide !
A voir également:
- Php tableau d'objet
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Salut,
Tu peux utiliser la fonction PHP json_encode() à la fin de ton traitement php pour retourner le tableaux des articles au format json :
Coté js, tu vas pouvoir récupérer ce tableau d'articles au format json via la variable data de la fonction de retour de la requête ajax. Tu peux alors parcourir la variable data comme n'importe quel tableau d'objet js :
Si jQuery n'arrive pas à détecter automatiquement le format json de la variable data, tu devras peut-être utiliser la fonction jQuery parseJSON pour utiliser facilement cette variable au début de la fonction de retour :
Bonne journée,
Tu peux utiliser la fonction PHP json_encode() à la fin de ton traitement php pour retourner le tableaux des articles au format json :
echo json_encode($articles);
Coté js, tu vas pouvoir récupérer ce tableau d'articles au format json via la variable data de la fonction de retour de la requête ajax. Tu peux alors parcourir la variable data comme n'importe quel tableau d'objet js :
var nbArticles = data.length; for (var i = 0; i < nbArticles; i++) { // un article console.log(data[i]); // titre d'un article console.log(data[i].titre); }
Si jQuery n'arrive pas à détecter automatiquement le format json de la variable data, tu devras peut-être utiliser la fonction jQuery parseJSON pour utiliser facilement cette variable au début de la fonction de retour :
data = $.parseJSON(data);
Bonne journée,
Merci pour ta réponse :)
je pense avoir fais les changements nécéssaires mais lorsque j'affiche console.log(data) dans le navigateur j'obtiens ca:
https://user.oc-static.com/upload/2016/11/02/1478115185542_Capture.PNG
et si je déplie un peu : https://user.oc-static.com/upload/2016/11/03/14781733658662_Capture.PNG
:/ et si je fais data[1].title par exemple j'obtiens "undefined" pareil si je fais data[2].text etc.. quel est le problème ??? merci !
je pense avoir fais les changements nécéssaires mais lorsque j'affiche console.log(data) dans le navigateur j'obtiens ca:
https://user.oc-static.com/upload/2016/11/02/1478115185542_Capture.PNG
et si je déplie un peu : https://user.oc-static.com/upload/2016/11/03/14781733658662_Capture.PNG
:/ et si je fais data[1].title par exemple j'obtiens "undefined" pareil si je fais data[2].text etc.. quel est le problème ??? merci !
Peut tu essayer d'appeler la page PHP retournant la liste des articles directement via ton navigateur (sans passer par la requête ajax) afin de voir le code json retourné par ce fichier ?
Peux tu nous montrer ce retour json afin de voir où est le problème ?
Coté js, tu peux également essayer de faire un console.log(data[i]); ou console.log(data[1]); pour voir le détail d'un objet du tableau data.
Peux tu nous montrer ce retour json afin de voir où est le problème ?
Coté js, tu peux également essayer de faire un console.log(data[i]); ou console.log(data[1]); pour voir le détail d'un objet du tableau data.