T我正在尝试在MVC应用程序中使用Ajax构建chartjs水平条形图。每次数据返回时,它都会在变量返回的数据周围加上双引号。
My code:
**<script>
$("#charts").click(function () {
$.ajax({
type: "POST",
url: rootDir + "Usd/provStDtAll",
dataType: 'json',
async: false,
cache: false,
timeout: 30000,
data: {},
success: function (adata) {
var sDate = '';
var ooSum = '';
var bgC = '';
for (var i = 0; i < adata.length; i++) {
sDate += '"' + adata[i].startDate + '",';
ooSum += adata[i].oSum + ',';
bgC += '"' + adata[i].bgcolor + '",';
}
console.log(sDate);
console.log(ooSum);
console.log(bgC);
var ctx = document.getElementById('psdChart').getContext('2d');
var chart1 = new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: [sDate],
datasets: [
{
label: 'Start Date',
backgroundColor: [bgC],
data: [ooSum]
}
]
},
options: {
responsive: true,
scales: {
yAxes: [{
display: true,
ticks: { beginAtZero: true }
}],
xAxes: [{
display: true,
ticks: { beginAtZero: true }
}]
},
legend: { display: false },
title: {
display: true,
text: 'Providers by Start Date'
}
}
});
chart1.render();
}
});
});
</script>**
具体来说,“sDate”、“bgC”和“ooSum”的变量都用双引号括起来。结果如下:
**sDate = ""Nov 2020","Mar 2021","Jan 2021","Feb 2021","Dec 2020","Apr 2021","
bgC = ""#00437d","#00437d","#00437d","#00437d","#00437d","#00437d","
ooSum = "1,57,18,26,1,9,"**
这会导致图表无法正确呈现,因为所有数据都用引号括起来。
我想让变量返回这样的值。。。
**sDate = "Nov 2020","Mar 2021","Jan 2021","Feb 2021","Dec 2020","Apr 2021",
bgC = "#00437d","#00437d","#00437d","#00437d","#00437d","#00437d",
ooSum = 1,57,18,26,1,9,**
console.log(adata)返回以下内容。
Array(6)
0: {startDate: "Nov 2020", oSum: 1, bgcolor: "#00437d"}
1: {startDate: "Mar 2021", oSum: 57, bgcolor: "#00437d"}
2: {startDate: "Jan 2021", oSum: 18, bgcolor: "#00437d"}
3: {startDate: "Feb 2021", oSum: 26, bgcolor: "#00437d"}
4: {startDate: "Dec 2020", oSum: 1, bgcolor: "#00437d"}
5: {startDate: "Apr 2021", oSum: 9, bgcolor: "#00437d"}
length: 6
基于你的代码,我认为你需要为你的变量定义数组而不是字符串。例子:
var sDate = [];
var ooSum = [];
var bgC = [];
for (var i = 0; i < adata.length; i++) {
sDate.push(adata[i].startDate);
ooSum.push(adata[i].oSum);
bgC.push(adata[i].bgcolor);
}
data: {
labels: sDate,
datasets: [
{
label: 'Start Date',
backgroundColor: bgC,
data: ooSum
}
]
},