Ajax会自动在成功调用中返回的变量数据周围加上双引号

Ajax会自动在成功调用中返回的变量数据周围加上双引号,ajax,asp.net-mvc,chart.js,Ajax,Asp.net Mvc,Chart.js,我正在尝试在MVC应用程序中使用Ajax构建chartjs水平条形图。每次数据返回时,它都会在变量返回的数据周围加上双引号 我的代码: **<script> $("#charts").click(function () { $.ajax({ type: "POST", url: rootDir + "Usd/provStDtAll&quo

我正在尝试在MVC应用程序中使用Ajax构建chartjs水平条形图。每次数据返回时,它都会在变量返回的数据周围加上双引号

我的代码:

**<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 = "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,**
我做错了什么???任何帮助都将不胜感激

更新:

控制器如下所示

[HttpPost]
   public JsonResult provStDtAll()
   {
      
      var psdAll = (from a in _signalContext.tIList.AsEnumerable()
                    where a.StartDate != null
          group a by new { StartDate = String.Format("{0:MMM yyyy}", 
          a.StartDate) } into b
                orderby b.Key.StartDate descending
                select new { b.Key.StartDate, oSum = b.Count(), bgcolor = 
     "#00437d" }).ToList();
 
    return Json(psdAll);
    }
和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
__proto__: Array(0)
concat: ƒ concat()
constructor: ƒ Array()
copyWithin: ƒ copyWithin()
entries: ƒ entries()
every: ƒ every()
fill: ƒ fill()
filter: ƒ filter()
find: ƒ find()
findIndex: ƒ findIndex()
flat: ƒ flat()
flatMap: ƒ flatMap()
forEach: ƒ forEach()
includes: ƒ includes()
indexOf: ƒ indexOf()
join: ƒ join()
keys: ƒ keys()
lastIndexOf: ƒ lastIndexOf()
length: 0
map: ƒ map()
pop: ƒ pop()
push: ƒ push()
reduce: ƒ reduce()
reduceRight: ƒ reduceRight()
reverse: ƒ reverse()
shift: ƒ shift()
slice: ƒ slice()
some: ƒ some()
sort: ƒ sort()
splice: ƒ splice()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
unshift: ƒ unshift()
values: ƒ values()
Symbol(Symbol.iterator): ƒ values()
Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …}
__proto__: Object

根据您的代码,我认为您需要为变量定义数组而不是字符串。例如:

                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);

                }

也许停止用引号括住数据。。。您正在使用代码执行此操作。您希望得到什么输出?问题是双引号将整个字符串括起来。对于oSum变量,我没有在该变量中加任何引号,但在运行后会出现双引号。能否显示控制器jsonresult provStDtAll?能否显示以下结果:console.log(adata),包括此odata的属性结果。如果这些是数组结果,请显示结果。感谢@Adlorem和Willy的关注!这件事把我难住了。我认为这与我何时以及如何调用变量有关。非常感谢您在这方面的帮助!我一贴上它,它就起了很大的作用。很高兴我能帮上忙。
                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
                            }
                        ]
                    },