我关注@Sam Farajpour Ghamari的答案:如何使用通过代码优先创建的数据库中的数据填充谷歌图表-ASP.Net MVC
这是我的脚本.js
google.charts.load('current', { packages: ['corechart', 'line'] });
google.charts.setOnLoadCallback(drawLineColors);
function drawLineColors() {
var data = new google.visualization.DataTable();
data.addColumn('number', '@Model.Days');
data.addColumn('number', '@Model.Time');
console.log("!!!");
//data.addRows([
// [9, 12], [11, 14]
//]);
$.getJSON("http://localhost:4411/GetChart", null, function (chartData) {
$.each(chartData, function (i, item) {
data.addRows([[item.Days, item.Time]]);
);
var options = {
title: 'You can see on chart in which time you eat',
hAxis: {
title: 'Days'
},
vAxis: {
title: 'Time'
},
colors: ['#FF6B00', '#0033FF']
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
});
}
正如你所看到的,我说"http://localhost:4411/GetChart而不是"@Url.Action('GetChart')",因为第一个不起作用。
在控制器中,我有:
[Route("/GetChart")]
public IActionResult GetChart()
{
return Json(_db.database
.Select(p =>new {p.Days, p.Time}));
}
http://localhost:4411/GetChart在浏览器中返回:
[{"Days":1101,"Time":20},{"Days":1102,"Time":20},{"Days":1103,"Time":20}]
注释的硬编码版本"[9,12],[11,14]"运行良好,但当前script.js版本在浏览器控制台(F12)中返回错误:
Uncaught Error: Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3
!!!
browserLink:64 [00:57:43 GMT+0400 (Russian Daylight Time)] Browser Link: Failed to invoke return value callback:
TypeError: Cannot read property 'files' of null
因此,我得到了没有数据的空图表。我需要帮助来了解我哪里有问题?也许问题是,脚本正在寻找格式为:[[days],[time]]的数据,但它却以格式获取数据:[[data},{time}]如果是这样,我该如何修复它?如果需要任何其他信息,请告诉我。感谢您的时间和回答。
自己解决了。真是愚蠢的错误。我只需要改变一下:
data.addRows([[item.Days, item.Time]]);
到此:
data.addRows([[item.days, item.time]]);
现在我想知道为什么会这样?在我的项目中,我用大写字母命名了天和时间。
"现在我想知道为什么会这样?在我的项目中,我用大写字母命名了Days and Time。"
你在使用asp.net核心吗?如果是,你必须打开默认情况下打开的camelCase调用。