J'ai un objet JSON qui est généré par PHP. C'est un objet avec un ensemble de dates. Il a le timeStamp puis une version formatée de la date. Comment pourrais-je répéter cela dans jQuery?
{
"dates":[
{
"timeStamp": 1317596400,
"formattedDate": "Mon 03 October 2011"
},
{
"timeStamp": 1317682800,
"formattedDate": "Tue 04 October 2011"
},
{
"timeStamp": 1317855600,
"formattedDate": "Thu 06 October 2011"
}
]
}
J'ai essayé:
for (var i in data) {
alert(data.dates[i].timeStamp);
};
for (var i in data) {
alert(data[i].dates.timeStamp);
};
et
for (var i in data) {
alert(data.dates.timeStamp[i]);
};
Puisque vous avez marqué votre question comme jquery
, vous devez utiliser $.each
car c'est la fonction d'itérateur de jquery:
$.each(data.dates, function(index, element) {
alert(element.timeStamp);
});
Si vous voulez vous en tenir à la syntaxe for in
(que je vois que vous avez essayée), une solution pourrait être:
for(var key in data.dates) {
alert(data.dates[key].timeStamp);
}
Mais sachez que la syntaxe for in
Peut faire plus que vous ne le pensez: elle itère également sur les propriétés héritées du prototype, donc elle peut être utile pour vous assurer que vous itérez uniquement sur les propriétés de l'instance d'objet:
for(var key in data.dates) {
// if it's not something from the prototype
if(data.dates.hasOwnProperty(key)) {
alert(data.dates[key].timeStamp);
}
}
mise à jour
Une autre manière élégante consiste à utiliser la méthode Object.keys
qui renvoie un tableau contenant toutes les clés de l'objet ciblé pour parcourir toutes les propriétés de l'objet:
for(var i=0, keys=Object.keys(data.dates), l=keys.length; i<l; i++) {
alert(data.dates[i].timeStamp);
}
Vous utilisez $.each()
.
Cela ressemble à ceci:
$.each(data, function(n, elem) {
// here you process your data to data loaded to lines
});
Vous pouvez simplement parcourir la structure json en utilisant jQuery each :
$.each(data, function(index, element) {
alert(element.dates.timeStamp);
});
jQuery.each () est probablement le moyen le plus simple, vérifiez ceci: http://api.jquery.com/jQuery.each/
par exemple
$.each(dates, function(index, date) { alert(date.timeStamp); });