理解クエリ構文を使用してデータベースからデータを取得し、それを Json オブジェクトとして渡して、Google チャートにデータを表示できるようにしようとしていますが、データが利用できないと表示されます。私のクエリ構文は良さそうです。Mysql ワークベンチで試してみたところ、必要な結果が返されました。ただし、C# MVC プロジェクトで必要な結果が返されません。データ オブジェクトを正しく返していない可能性があります。ダミーデータでは機能しますが、データベースからのデータでは機能しません。
[HttpPost]
public JsonResult GetChartData()
{
//var siteData = new[] { new { time = 2345, tdate = "2012, 3, 1" },
// new { time = 4568, tdate = "2012, 3, 2" },
// new { time = 1237, tdate = "2012, 3, 3" },
// new { time = 9874, tdate = "2012, 3, 4" },
//};
var test = from p in _db.page_loads
join f in _db.sites
on p.site_id equals f.id
where f.thirdParty_id == siteId //(siteId is private int declared in my class above
select new { time = p.time, created_at = p.created_at };
return Json(test);
}
そして、これは私のスクリプトがビューセクションでどのように見えるかです
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', { 'packages': ['annotatedtimeline'] });
google.setOnLoadCallback(drawChart);
function drawChart() {
$.post('/metrics/GetChartData', {},
function (data) {
var tdata = new google.visualization.DataTable();
tdata.addColumn('datetime', 'Date');
tdata.addColumn('number', 'Times');
for (var i = 0; i < data.length; i++) {
var date = new Date(parseInt(data[i].created_at.substr(6)));
var load_time = data[i].time;
tdata.addRow([date, load_time]);
}
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(tdata, { displayAnnotations: true });
});
}