AJAX 调用后重绘 Morris Donut
Redraw Morris Donut after AJAX call
我正在使用 Morris Donut 作为我正在处理的仪表板,并使用两个日期范围作为参数通过 AJAX 检索数据。我面临的问题是,当我输入两个新的日期范围时,甜甜圈图会在页面加载时已创建的甜甜圈之上呈现一个新日期范围。我已经搜索并可以看到有关使用 setData()
的信息,但我不知道如何将其包含在我的代码中。
我的代码:
$(document).ready(function () {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
populateDonut(start, end);
});
单击搜索按钮时执行以下操作:
$('#DateRange').click(function() {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
populateDonut(start, end);
});
这是被调用的函数。
function populateDonut(start, end) {
var param = { start: start, end: end };
$.ajax({
type: "POST",
url: "/WebService.asmx/getDonutData",
contentType: "application/json; charset=utf-8",
dataType: 'json',
async: true,
data: JSON.stringify(param),
success: function (result) {
var data = eval("(" + result.d + ")");
var pieChart = '';
if (data.status == 0) {
var donut = Morris.Donut({
element: 'pieChart',
data: [
{ label: "Inbound", value: data.inbound },
{ label: "Outbound", value: data.outbound },
{ label: "Unanswered", value: data.unanswered }
],
colors: ['#1ca8dd', '#33b86c', '#ebc142'],
resize: true,
formatter: function (x) { return x + "%" }
});
}
}
});
}
输入新日期范围后发生的情况的屏幕截图:
在呈现第二个图表之前尝试调用 $("#pieChart").empty();
。
最好在这里:
$('#DateRange').click(function() {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
// Clear the existing chart before populating new donut
$("#pieChart").empty();
populateDonut(start, end);
});
我试过下面的代码,它对我有用:
$("#chart-id").empty();
You can use it on each time you call chart data .
我正在使用 Morris Donut 作为我正在处理的仪表板,并使用两个日期范围作为参数通过 AJAX 检索数据。我面临的问题是,当我输入两个新的日期范围时,甜甜圈图会在页面加载时已创建的甜甜圈之上呈现一个新日期范围。我已经搜索并可以看到有关使用 setData()
的信息,但我不知道如何将其包含在我的代码中。
我的代码:
$(document).ready(function () {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
populateDonut(start, end);
});
单击搜索按钮时执行以下操作:
$('#DateRange').click(function() {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
populateDonut(start, end);
});
这是被调用的函数。
function populateDonut(start, end) {
var param = { start: start, end: end };
$.ajax({
type: "POST",
url: "/WebService.asmx/getDonutData",
contentType: "application/json; charset=utf-8",
dataType: 'json',
async: true,
data: JSON.stringify(param),
success: function (result) {
var data = eval("(" + result.d + ")");
var pieChart = '';
if (data.status == 0) {
var donut = Morris.Donut({
element: 'pieChart',
data: [
{ label: "Inbound", value: data.inbound },
{ label: "Outbound", value: data.outbound },
{ label: "Unanswered", value: data.unanswered }
],
colors: ['#1ca8dd', '#33b86c', '#ebc142'],
resize: true,
formatter: function (x) { return x + "%" }
});
}
}
});
}
输入新日期范围后发生的情况的屏幕截图:
在呈现第二个图表之前尝试调用 $("#pieChart").empty();
。
最好在这里:
$('#DateRange').click(function() {
var start = $('#SearchStart').val();
var end = $('#SearchEnd').val();
// Clear the existing chart before populating new donut
$("#pieChart").empty();
populateDonut(start, end);
});
我试过下面的代码,它对我有用:
$("#chart-id").empty();
You can use it on each time you call chart data .