Не совсем уверен, что с этим не так, поскольку контроллер и вид выглядят правильно. Я даже могу заставить JSON вернуть данные из контроллера.
Пример возврата JSON:
[{"Expr1":134,"Computer_Brand":"Windows 10"}]
Все, что я получаю - это рендеринг пустой страницы без диаграммы и ошибок.
На самом деле я ломал голову над этим. Любая помощь будет очень признательна.
Контроллер
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Services;
using System.Web.Services;
using expendit.Models;
using Newtonsoft.Json;
using Syncfusion.Linq;
using Syncfusion.Olap.MDXQueryParser;
namespace expendit.Controllers
{
public class Charts_ComputerOSController : Controller
{
private HAWKTRAINING_ROIEntities1 db = new HAWKTRAINING_ROIEntities1();
// GET: Charts_ComputerOS
public ActionResult Index()
{
return View();
}
public JsonResult GetPiechartJSON()
{
using (var db = new HAWKTRAINING_ROIEntities1())
{
var result = (from tags in db.Charts_ComputerOS
orderby tags.Computer_Brand ascending
select new { tags.Expr1, tags.Computer_Brand }).ToList();
//return Json(JsonConvert.SerializeObject(result), JsonRequestBehavior.AllowGet);
return Json(result, JsonRequestBehavior.AllowGet);
}
}
public ContentResult GetDefect()
{
using (var db = new HAWKTRAINING_ROIEntities1())
{
var defect = (from d in db.Charts_ComputerOS
select new
{
d.Computer_Brand,
d.Expr1,
}).ToList();
return Content(JsonConvert.SerializeObject(defect));
}
}
JsonSerializerSettings _jsonSetting = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore };
}
}
View
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chartdiv"> </div>
<script type="text/javascript">
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'GetPiechartJSON',
data: '{}'
}).done(function (response) {
drawchart(response.d);
}).fail(function (jqXHR, status, errorThrown) {
//for example purposes
drawchart([{ "Expr1": 134, "Computer_Brand": "Windows 10" }]);
//console.log(status, errorThrown);
});
function drawchart(dataValues) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Computer_Brand');
data.addColumn('number', 'Expr1');
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].Computer_Brand, dataValues[i].Expr1]);
}
var chart = new google.visualization.ColumnChart (document.getElementById('chartdiv'));
chart.draw(data, {
title: 'Computer OS Data',
legend: {
alignment: 'end',
position: 'top'
},
fontsize: 14,
chartArea: {
width: '50%'
}
});
}
});
</script>