J'ai copié ceci depuis le site jquery. J'essaie d'apprendre comment obtenir des données json sur une page Web. La date a été validée le : http://jsonlint.com/
Les résultats de l'exécution du script my sont : [objet Objet] [objet Objet] [objet Objet] [objet Objet] [objet Objet]
Dois-je analyser les données ou est-ce que getJSON le fait.
C'est le code que j'utilise en utilisant:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="js/jquery-1.7.1.js"></script>
<script type="text/javascript">
$.getJSON("data.json", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push("<li id="" + key + "">" + val + "</li>");
});
$("<ul/>", {
"class": "my-new-list",
html: items.join("")
}).appendTo("body");
});
</script>
</head>
<body>
</body>
</html>
Des conseils de dépannage seraient super et bien sûr une réponse serait super aussi !
data.json
[
{
"bytes": "476.577044"
},
{
"bytes": "136113.5289"
},
{
"bytes": "118870.8151"
},
{
"bytes": "55001.67852"
}
]
réponse console.log (données) :
[Object { bytes="476.577044"}, Object { bytes="136113.5289"}, Object { bytes="118870.8151"}, Object { bytes="55001.67852"}]
JSON.html (line 14)
[Object { bytes="476.577044"}, Object { bytes="136113.5289"}, Object { bytes="118870.8151"}, Object { bytes="55001.67852"}]
JSON.html (line 14)
[Object { bytes="476.577044"}, Object { bytes="136113.5289"}, Object { bytes="118870.8151"}, Object { bytes="55001.67852"}]
JSON.html (line 14)
[Object { bytes="476.577044"}, Object { bytes="136113.5289"}, Object { bytes="118870.8151"}, Object { bytes="55001.67852"}]
Réponses:
1 pour la réponse № 1Assez proche, essayez ceci : (tant que le fichier "data.json" est un fichier valide)
$(document).ready(function(){
$.getJSON("data.json", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push("<li id="" + key + "">" + val + "</li>");
});
$("<ul/>").addClass("my-new-list").html(items.join("")).appendTo("body");
});
});
MODIFIER
La façon dont votre json est configuré, $.each
va itérer le tableau externe contenant les objets. Ce qui fait le key
un index numérique, et le val
l'objet réel. Cela dit, changer le $.each
partie pour ressembler à ceci:
$.each(data, function(key, val) {
items.push("<li id="" + key + "">" + val.bytes + "</li>");
});
devrait faire l'affaire
(note : les identifiants ne doivent pas commencer par un chiffre)
2 pour la réponse № 2
J'ai eu le même problème. Je l'ai résolu en mettant l'objet JSONP dans console.log()
puis en regardant l'arbre dans Chrome"soutils de développement. Là, j'ai réalisé que "objet" n'était que le nom que l'analyseur a donné à tous les différents objets à l'intérieur du fichier JSON, vous devez donc en tenir compte lors de la récupération des valeurs.
$(document).ready(function(){
$.getJSON("data.json", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push("<li >" + data.object.bytes + "</li>");
});
$("<ul/>").addClass("my-new-list").html(items.join("")).appendTo("body");
});
});
Vos données que vous voulez sont dans une paire clé:valeur à l'intérieur un objet appelé "objet qui est à l'intérieur d'un tableau (c'est ce qui est parcouru lorsque vous faites $.each()
)
Vous devez donc dire à JQuery de regarder à l'intérieur de l'objet et puis dites-lui quelle clé rechercher.
Je n'ai pas mis d'ID car je ne suis pas vraiment sûr de ce que vous vouliez qu'ils soient. Vouliez-vous simplement que chaque élément ait des « octets » comme ID ? Les ID doivent être uniques (au moins selon cela http://css-tricks.com/the-difference-between-id-and-class/)
Si ce que vous voulez est un class
afin que vous puissiez faire CSS/JQuery sur l'ensemble du lot, vous pouvez essayer quelque chose comme "<li class ="" + object.key + "">"