2013-05-25 6 views
0

J'essaie d'analyser les données à partir d'un JSON construit dans un fichier php basé sur ce guide:Google Charts JSON chargement des guillemets doubles

https://google-developers.appspot.com/chart/interactive/docs/php_example?hl=en

J'ai créé mon JSON une bonne façon, mais quand j'utilise cette le code, il semble qu'il ne lit pas le JSON bien:

function drawChart() { 
    var jsonData = $.ajax({ 
     url: "loader.php", 
     dataType:"json", 
     async: false 
     }).responseText; 

Je pense qu'il ya des problèmes avec les guillemets doubles dans les clés du JSON puisque dans this example l'objet Javascript ne pas les guillemets. Alors quelque part, je devrais manquer quelque chose?

Mon code scripts est:

<script type="text/javascript"> 

     // Load the Visualization API and the piechart package. 
     google.load('visualization', '1.0', {'packages':['corechart']}); 

     // Set a callback to run when the Google Visualization API is loaded. 
     google.setOnLoadCallback(drawChart); 


     function drawChart() { 

     var jsonData = $.ajax({ 
       dataType:"json", 
       url: "loader.php", 
       async: false 
       }).responseText; 

     // Create our data table out of JSON data loaded from server. 
     var data = new google.visualization.DataTable(jsonData); 



     // Instantiate and draw our chart, passing in some options. 
     var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
     chart.draw(data, {title: 'Results', width: 400, height: 240}); 

    } 
    </script> 

Et le code source de ce que mes loader.php retours est:

{"cols": 
    [{"label":"Sources","type":"string"}, 
    {"label":"Count","type":"number"}], 
"rows": 
    [{"c":[{"v":"web"},{"v":"4757"}]}, 
    {"c":[{"v":" iPhone"},{"v":"4324"}]}, 
    {"c":[{"v":"Android"},{"v":"3294"}]}, 
    {"c":[{"v":"BlackBerry\u00ae"},{"v":"2336"}]}, 
    {"c":[{"v":"Instagram"},{"v":"951"}]} 
    ]} 

Note: les charges de tableau et sans erreurs, mais ne charge pas le JSON. Il dit: Autre 100%. Donc, ni les étiquettes ni les lignes ne sont correctement chargées.

+1

Etes-vous sûr qu'il ne charge pas le JSON ? Les chiffres ne sont pas réellement des chiffres, donc Google n'a aucun moyen d'afficher un graphique à secteurs (puisqu'il n'y a aucune valeur à afficher). Qu'est-ce qui s'affiche après l'exécution du code? Qu'est-ce que l'alerte de 'alert (data.getValue (1,1))'? – jmac

Répondre

0

Les valeurs ne doivent pas être indiquées. Supprimer les citations, par exemple

var jsonData={"cols": 
    [{"label":"Sources","type":"string"}, 
    {"label":"Count","type":"number"}], 
"rows": 
    [{"c":[{"v":"web"},{"v":4757}]}, 
    {"c":[{"v":" iPhone"},{"v":4324}]}, 
    {"c":[{"v":"Android"},{"v":3294}]}, 
    {"c":[{"v":"BlackBerry"},{"v":2336}]}, 
    {"c":[{"v":"Instagram"},{"v":951}]} 
    ]}; 

Et le graphique fonctionne.

NB: Soyez conscient de BlackBerry \ u00ae, vous avez un décodage/encodage de problème dans votre loader.php (mais ce n'est pas ce qui a causé le problème)

Questions connexes