0

理解クエリ構文を使用してデータベースからデータを取得し、それを 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 });

        });

    }

4

0 に答える 0