无法根据 json 响应绘制圆环图
Not able to draw Doughnut Chart from json response
我正在尝试使用 chartjs 绘制圆环图
我从我的本地主机得到了正确的 json 响应
我的代码是:
$(document).on('click', '#plotGraph', function(event) {
event.preventDefault();
alert("hello");
$.getJSON("PlotExpenseGraph", function(data1) {
alert("hiiiii");
console.log(data1);
console.log(data1.expenseList[0].param);
var pieData;
$.each(data1.expenseList, function(position, expenseList) {
console.log(expenseList.param);
console.log(expenseList.totalCount);
console.log(expenseList.totalValue);
pieData = {
value: expenseList.totalValue,
color: "#F7464A",
highlight: "#FF5A5E",
label: expenseList.param
}
});
var ctx = $("#myChart").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Doughnut(pieData);
});
});
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.1/Chart.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="#" id="plotGraph">Plot graph</a>
<canvas id="myChart" width="500" height="300"></canvas>
我的主机数据是
参数:"Advertising"
总数:2
总价值:754
广告
广告
2
754
我的代码没有绘制任何图形,也没有在控制台上给出任何错误。
我应该做些什么扫描才能正确地在上面的代码上工作。
ChartJS 需要一个对象数组作为 Doughnut()
方法的参数。另一方面,您只需创建对象,从而覆盖最后一个对象。
相反,您应该将 pieData
声明为数组并在 each()
回调中添加条目,如下所示:
$(document).on('click', '#plotGraph', function (event) {
event.preventDefault();
$.getJSON("PlotExpenseGraph", function (data1) {
// prepare parameter to ChartJS
var pieData = [];
$.each(data1.expenseList, function (position, expenseList) {
// add respective entry
pieData.push({
value : expenseList.totalValue,
color : "#F7464A",
highlight : "#FF5A5E",
label : expenseList.param
});
});
// paint
var ctx = $("#myChart").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Doughnut(pieData);
});
});
我正在尝试使用 chartjs 绘制圆环图 我从我的本地主机得到了正确的 json 响应 我的代码是:
$(document).on('click', '#plotGraph', function(event) {
event.preventDefault();
alert("hello");
$.getJSON("PlotExpenseGraph", function(data1) {
alert("hiiiii");
console.log(data1);
console.log(data1.expenseList[0].param);
var pieData;
$.each(data1.expenseList, function(position, expenseList) {
console.log(expenseList.param);
console.log(expenseList.totalCount);
console.log(expenseList.totalValue);
pieData = {
value: expenseList.totalValue,
color: "#F7464A",
highlight: "#FF5A5E",
label: expenseList.param
}
});
var ctx = $("#myChart").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Doughnut(pieData);
});
});
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.1/Chart.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="#" id="plotGraph">Plot graph</a>
<canvas id="myChart" width="500" height="300"></canvas>
我的主机数据是
参数:"Advertising"
总数:2
总价值:754
广告
广告
2
754
我的代码没有绘制任何图形,也没有在控制台上给出任何错误。 我应该做些什么扫描才能正确地在上面的代码上工作。
ChartJS 需要一个对象数组作为 Doughnut()
方法的参数。另一方面,您只需创建对象,从而覆盖最后一个对象。
相反,您应该将 pieData
声明为数组并在 each()
回调中添加条目,如下所示:
$(document).on('click', '#plotGraph', function (event) {
event.preventDefault();
$.getJSON("PlotExpenseGraph", function (data1) {
// prepare parameter to ChartJS
var pieData = [];
$.each(data1.expenseList, function (position, expenseList) {
// add respective entry
pieData.push({
value : expenseList.totalValue,
color : "#F7464A",
highlight : "#FF5A5E",
label : expenseList.param
});
});
// paint
var ctx = $("#myChart").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Doughnut(pieData);
});
});