<script>
$(document).ready(function() {
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs[0], function(key,val) {
alert(key+val);
});
});
</script>
Ce code récupère les premières données. name:zonealarm
Et price:500
. Comment puis-je récupérer toutes les données de l'objet? J'ai essayé $.each(data.programs, function(key,val)
mais cela n'a pas fonctionné. Dois-je le mettre en boucle?
$.each()
fonctionne pour les objets et les tableaux à la fois:
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs, function (i) {
$.each(data.programs[i], function (key, val) {
alert(key + val);
});
});
... et puisque vous obtiendrez l’élément de tableau actuel comme second argument:
$.each(data.programs, function (i, currProgram) {
$.each(currProgram, function (key, val) {
alert(key + val);
});
});
Vous passez en effet le premier élément de données à chaque fonction.
Passez data.programs à chaque fonction. Changez le code comme ci-dessous:
<script>
$(document).ready(function() {
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs, function(key,val) {
alert(key+val);
});
});
</script>
Fondamentalement, vous devez faire deux boucles ici. Celui que vous êtes déjà en train d'itérer chaque élément dans le 0ème élément du tableau.
Vous avez des programmes: [{...}, {...}], donc les programmes [0] sont {"name": "zonealarm", "price": "500"} Ainsi, votre boucle ne fait que passer par-dessus.
Vous pouvez faire une boucle externe sur le tableau
$.each(data.programs, function(index) {
// then loop over the object elements
$.each(data.programs[index], function(key, value) {
console.log(key + ": " + value);
}
}