Transformer JSON dans le format correct pour mettre en Morris Graphique à barres plugin
Je suis en utilisant le Morris Graphique à barres plugin. Vous pouvez voir un exemple ici.
Le bon format de données à insérer dans le tableau est le suivant:
data: [
{ y: '2006', a: 100, b: 90 },
{ y: '2007', a: 75, b: 65 },
{ y: '2008', a: 50, b: 40 },
{ y: '2009', a: 75, b: 65 },
{ y: '2010', a: 50, b: 40 },
{ y: '2011', a: 75, b: 65 },
{ y: '2012', a: 100, b: 90 }
],
Je veux remplir cette info mais avec une requête ajax PHP.
$.ajax({
url: 'getchart.php',
success: function(content){
console.log(content); //Native return
var element = [];
var json = JSON.parse(content);
for(var i = 0; i <= json.length - 1; i++){
element[i] = {y: json[i][0].month, a: json[i][0].total};
}
console.log(element);
}
});
J'ai réaliser la demande avec succès mais j'ai besoin de convertir au format json-je obtenir de l'ajax pour le format morris graphique besoins.
[[{"total":1,"Month":7,"description":"Started"},
{"total":1,"Month":6,"description":"Started"}],
[{"total":3,"Month":6,"description":"Started"}]]
Le code ci-dessus est ce que la variable content
de sortie. Le problème ici est que l'un index contient 2 sous-index et les autres index ne contient qu'un sous-indice:
Indice 1:
[{"total":1,"Month":7,"description":"Started"},
{"total":1,"Month":6,"description":"Started"}],
Et le deuxième index ne contient qu'un seul sous-indice
Indice 2:
[{"total":3,"Month":6,"description":"Started"}]],
Cela se produit parce que je suis poussant deux tableaux en un en PHP.
$AN = $chart->chartAN(); //Apresentation and Negociation
$AC = $chart->chartAC(); //Accomplished
$final = array($AN, $AC);
echo json_encode($final);
Et, d'ailleurs, la sortie de deux fonctions est la même:
while($query->fetch()){
$rows[] = array("total" => $total, "month" => $month, "description" => $type);
}
Actuellement, le console.log(element)
me renvoie:
[Object, Object];
> 0: Object
a: 1
y: 7
> 1: Object
a: 3
y: 6
Mon résultat final, je voudrais faire quelque chose comme:
element: [
{ y: 'April', a: value_from_chartAN, b: value_from_chartAC },
{ y: 'May', a: value_from_chartAN, b: value_from_chartAC },
],
MODIFIER: afin De clarifier la question (parce que je sais n'est pas simple).
Je voudrais que mon sortie:
element: [
{ y: month_from_database, a: value_from_chartAN, b: value_from_chartAC },
{ y: month_from_database, a: value_from_chartAN, b: value_from_chartAC },
],
Depuis value_from_chartAN
ou value_from_chartAC
peut être null, il faut ajouter le nombre 0.
Si vous regardez l'exemple de Morris: http://jsbin.com/uzosiq/258/embed?javascript,en direct
L'année correspondent à mon Mois, la barre bleue à la value_from_chartAN
et la barre grise à value_from_chartAC
.
Je ne vois pas où la valeur de
b:
dans votre sortie attendue est censé venir de, et la valeur de y:
devrait logiquement être une année (2014), mais vous voulez qu'il soit un mois (avril)? Veuillez éditer votre question à clarifierJe viens de mettre à jour mon sujet.
OK, mauvais jour de ma réponse avec une solution
OriginalL'auteur Linesofcode | 2014-06-19
Vous devez vous connecter pour publier un commentaire.
Le problème principal est que votre PHP valeurs de retour (votre JSON que vous enverrez) n'est pas sur la même structure que de besoin par le graphique à barres. Vous devez l'aplatir en premier. De là, vous code devrait fonctionner correctement. Exemple de Violon
Considérons cet exemple:
ok, vous pouvez vérifier le violon au-dessus et juste la tripoter de partout. sûr pas de problème
Ok, j'ai fait quelques modifications, mais à la fin, a parfaitement fonctionné. Je vous remercie.
OriginalL'auteur user1978142
Vous contrôlez les données envoyées par le serveur, assurez-vous donc de son dans le bon format avant de l'envoyer simplement fusionner les tableaux php en un seul, et de définir le bon en-tête:
Maintenant, vous avez exactement le format que vous désirez retourner à votre ajax fonction, aucune autre js de traitement requis:
MODIFIER selon vos éclaircissements. La solution est encore pour envoyer le bon de données à partir de php, mais le code est un peu plus compliqué:
Pourquoi, il ne comprends pas?
J'ai essayé votre solution mais je ne comprends pas comment il va ot m'aider à atteindre ce désir de sortie.
Ok, je vois ce que tu veux dire - votre question est un peu déroutant et il me manque juste la façon dont vous voulez formater les données. J'éditerai avec une solution bientôt
Veuillez voir mon montage pour une solution
OriginalL'auteur Steve
Je ne sais pas à propos de l'OP du problème?
Vous êtes à la recherche pour obtenir de l'aide? Si oui, vous avez besoin de poster une nouvelle question, pas une réponse sur une ancienne. Je vous recommande également écrit à propos de ce que le problème que vous avez est.
je m de ne pas poser de nouveau la question. ses la solution pour ceux qui veulent montrer des données réelles sur Morris Graphique à barres. Comme je n'ai pas trouvé de solution pour Morris Graphique à barres. Après avoir cherché tant pour google et de dépassement de pile puis je m en mesure de le faire fonctionner pour moi. j'ai donc envie de partager avec d'autres personnes
Si ce n'aborde pas spécifiquement cette OP problème, il ne devrait pas être une réponse ici. Au lieu de cela, écrire votre propre question et après cette réponse (auto-réponse Q&A est parfaitement bien).
OriginalL'auteur waheed shah