/ / Créer une liste imbriquée dynamique à partir de JSON à l'aide de jQuery - javascript, jquery, json

Créez une liste imbriquée dynamique à partir de JSON à l'aide de jQuery - javascript, jquery, json

J'ai du mal à comprendre ce problème. J'ai ce JSON dans un fichier appelé list.json à des fins de test. Je vais obtenir cette liste générée par le serveur plus tard.

[
{
name    : "ABC",
id      : "link_abc"
},
{
name    : "DEF",
id      : "link_def"
},
{
name    : "GHI",
id      : "link_ghi"
},
{
name    : "JKL",
id      : "link_jkl"
}

]

Et voici mon javascript pour afficher la liste en <li> format.

$(function(generate_list_from_JSON){
$("a[href="#state"]").click(function(){
$.getJSON("scripts/list.json", function (obj){
$.each(obj.name, function (key, value){
alert(key);
})
});
});
});

Le problème est que rien n’est affiché, même dans la console. Comment puis-je intercepter ce qui est envoyé et ce qui est reçu? J’ai essayé console.log() mais toujours vide.

Réponses:

2 pour la réponse № 1

JSON nécessite des guillemets autour des noms d'attribut. Donc, vous devez faire quelque chose comme ça:

[
{
"name"    : "ABC",
"id"      : "link_abc"
},
...
]

Les objets JavaScript ne nécessitent pas la citation des noms d’attributs, contrairement à JSON.

HTH


1 pour la réponse № 2

Je vois peu de problèmes:

  • Votre objet JSON n'est pas valide. C'est un tableau d'objets mais les deux premiers objets ne sont pas séparés par , et les chaînes en JSON doivent être citées.
  • Dans votre code javascript, vous faites référence à obj.users, et votre objet, même s'il aurait cela ,, n'a pas du tout d'utilisateurs.

1 pour la réponse № 3

Vous ne pouvez pas faire un chacun sur obj.name. obj est un tableau. Les tableaux ne possèdent pas de propriété nommée "nom" et vous ne pourrez donc jamais entrer dans la boucle.

Il vous suffit de parcourir obj [0] pour obj [obj.length-1].