Traiter un fichier JSON en JavaScript [Résolu/Fermé]

Signaler
Messages postés
1322
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
-
Messages postés
1322
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
-
Bonsoir, je vous explique, j'ai 2 fichiers de retour JSON, l'un contient une liste de critères, et l'autre contient des offres.
Je voudrais connaître la marche à suivre pour pouvoir dans un .js, récupérer les données de ces fichiers (pour les afficher par la suite). Et pour qu'après je puisse faire un contrôle de ces critères pour vérifier si une offre y correspond.
J'utilise actuellement AngularJS pour ma page.

Merci de votre aide.

1 réponse

Messages postés
1642
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
5 mai 2020
243
Bonjour,

déjà si le JSON est produit "artisanalement" pour s'assurer de sa conformité on peut utiliser un validateur : https://jsonlint.com/

Une fois sa conformité vérifiée, il suffit d'utiliser le json dans javascript comme un tableau à n dimensions. Ces "fichiers" sont renvoyé à ajax ? C'est du jQuery, du JS natif ?
Messages postés
1642
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
5 mai 2020
243
Ah une erreur que j'ai vu en relisant dans les paramètres de l'appel ajax :

...
data: 'param1' + valeur1 + 'param2' + valeur2
...


dans la query string bien sur à partir du 2eme param on met des '&' (en fait c'est la balise ‹code› du site qui les a mangé :p mais en mettant un '&' ça passe :p) ce qui donnerait :

(et on oublie pas le '=' non plus :s)

Ce qui donnerait après correction :

// Je considère que valeur1 ... valeurn sont des variables javascript passées donc pas de quotes
...
data: 'param1' + valeur1 + '&param2=' + valeur2  ...  + '&paramn=' + valeurn
...


Dans un navigateur la requète envoyée par ajax donnerait quelque chose comme :

http://mon.adresse.fr/mon_chemin/mon_form_qui_renvoie_du_json.php?param1=toto&param2=tutu&paramn=turlututu
Messages postés
1642
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
5 mai 2020
243
Sinon de façon plus concise, tu peux aussi utiliser (il existe une version GET) :

$.post( "chemin_vers_mon_form/mon_form_qui_renvoie_du_json.php", function( data ) {
  alert(data);
});


Dans ce cas, tes données seront dans data ...
Ne pas hésiter à aller voir les exemples sur https://api.jquery.com/jQuery.post/ ... Ils sont nombreux et bien expliqués ...
Messages postés
1322
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
662
Ce que tu m'as donné m'a pas mal aidé aujourd'hui, merci, maintenant, j'ai compris le fonctionnement et j'arrive à:

function jsonController($scope, $http){
    $scope.showLignes = function(){
        $http.get('test.json')
            .success(function(response){  $scope.lignes = response; console.log(response); })
            .error(function(response){ alert('Erreur...'); console.log(response); });
    }
    $scope.showLignes();
}


Et çà fonctionne nickel (pour le moment).
Messages postés
1642
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
5 mai 2020
243
Bah, content d'avoir pu t'aider ...

je vois que tu as commencé à mettre du angular ? Je crois que ça gère super bien le json (si j'en crois les quelques démos sur le site https://angularjs.org/ ). Par exemple dans le "todo.js" de la démo du Todo
$scope.todos
est au format json et pour le lire dans le "todo.html" ils font juste un
<li ng-repeat="todo in todos">
et un bind sur
{{todo.text}}
...

Alors y'a sans aucun doute beaucoup plus simple à faire en angular avec le binding que ce que je t'écrivais en JS pur ...

Tu passeras le truc en résolu, stp, si c'est ok alors ?
Messages postés
1322
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
662
Oui, c'est prévu, je passe en Résolu, merci pour ton aide.
C'est vrai qu'avec Angularjs, çà à l'air nettement moins compliqué.