Mise à jour: Voir le commentaire d'Anthony Grist sur votre question, j'ai raté le fait que votre JSON est invalide. Comme il n'a pas posté de réponse, je vais le ramasser.
Votre JSON est invalide parce que vous retournez deux tableaux distincts, celui-ci:
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}]
et celui-ci:
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}]
Vous ne pouvez pas faire cela, parce que le niveau supérieur un document JSON doit être un objet (un objet ou un tableau).
Vous pouvez retourner un objet avec des propriétés pour chaque tableau:
{
"vdata":
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}
],
"datedata":
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}
]
}
Après l'analyse syntaxique (voir ci-dessous), vous pouvez accéder à ces données comme ceci:
console.log(data.vdata[0].v); // "233"
console.log(data.datedata[0].date); // "2013-02-01"
Ou un tableau avec deux fentes , avec chaque slot dans lequel se trouve l'un de vos tableaux:
[
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}
],
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}
]
]
Après l'analyse (voir ci-dessous), vous pouvez accéder que les données comme ceci:
console.log(data[0][0].v); // "233"
console.log(data[1][0].date); // "2013-02-01"
Personnellement, je préfère utiliser un objet, car il est clair que je éventail accès.
réponse originale:
jQuery va analyser le JSON dans un objet pour vous et passer à la fonction que success
, que vous pouvez alors accéder comme tout autre objet. Dans votre cas, le niveau supérieur est un tableau. Alors:
$.ajax({
url: url,
type: 'POST',
dataType:"json",
async: false,
success: function(data) {
// Use the line from above that suits the way
// you updated your JSON structure
}
});
Side note: async: false
est dépréciée et sera retiré à un moment donné.Ce n'est généralement pas une bonne idée de faire des requêtes ajax synchrones, cela tend à bloquer l'interface utilisateur du navigateur lors de la requête. Au lieu de cela, il suffit de structurer votre code pour continuer le traitement lorsque le rappel success
est déclenché.
JSON représente un seul objet ou un tableau, de sorte que vous ne pouvez pas retourner deux tableaux entièrement séparés. Comment cela fonctionnerait-il lorsque vous l'analyseriez en un objet/tableau stocké dans une variable? Une variable ne peut pas pointer vers deux choses distinctes. –
@AnthonyGrist a raison. Votre chaîne JSON n'est pas valide. Vérifiez-le dans http://jsonlint.com/ – Kris
@Kris merci pour le lien, je suppose que je dois reconstruire ma chaîne json. – Darth