私は Google Charting API を利用しているプロジェクトに取り組んでおり、json を使用してグラフにデータ テーブルを作成したいと考えています。
テストとして、データベースからの動的データを使用して試行する前に単純な配列を作成しようとしていますが、json を正しい形式で取得する際に問題が発生しています。
Google のドキュメントでは、json の内容は次のようになっていると書かれています。
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
json コードを返す関数を呼び出しています。
以下は、関数の呼び出し方法です
print json_encode(test());
テスト関数は
function test()
{
$array = array();
$array['cols'][] = "20-01-13";
$array['cols'][] = "21-01-13";
$array['cols'][] = "22-01-13";
$array['rows'][] = 22;
$array['rows'][] = 26;
$array['rows'][] = 12;
return $array;
}
グラフを生成する JavaScript は次のとおりです。
<script>
google.load('visualization', '1', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "loadGraph.php",
dataType:"json",
async: false
}).responseText;
var data = new google.visualization.DataTable(jsonData);
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('lineGraph'));
chart.draw(data, {width: 400, height: 240});
}
</script>
jsonをエコーすると、次の形式で返されます
{"cols":["20-01-13","21-01-13","22-01-13"],"rows":[22,26,12]}
これをGoogleチャートのデータセットに使用しようとすると、次のメッセージが表示されます
Cannot read property of '1' of undefined
私は、x 軸に沿った日付と、y 軸に沿ったその日付に何かが発生した回数を含む単純な折れ線グラフのみを作成しています。
配列を作成して、Google API チャートの正しい形式にする方法を教えてください。
ご協力いただきありがとうございます。