现在已经挣扎了几个小时。基本上我需要这个json变量成为一个数组,以便Chart.js可以识别它。
C#控制器返回如下:
return Json(new { DataString = json }, JsonRequestBehavior.AllowGet);
Backend从json结果中返回以下字符串:
[{value:228,color:"#B3A11A"},{value:255,color:"#948299"},{value:1,color:"#5108C5"},{value:271,color:"#A86199"},{value:246,color:"#6A8869"}]
哪个非常好,但是当我将它分配给'array'变量时,它不想“成为”一个数组,在这个javascript中:
for (var i = 0; i < tables.length; i++) {
$.get('/Stats/GetFieldJson', { fieldname: tables[i], tablename: @ViewData["tablename"]' },
function(data) {
var array = JSON.parse(data.DataString);
var ctx = $("#Maritalstatus").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Pie(array, { scaleShowValues: true });
}, 'json');
}
如何将data.DataString放入一个可识别的数组中,该数组与控制器输出的数组语法相匹配?
注意如果我只是说:
var array = [{value:228,color:"#B3A11A"},{value:255,color:"#948299"},{value:1,color:"#5108C5"},{value:271,color:"#A86199"},{value:246,color:"#6A8869"}]
效果很好。
答案 0 :(得分:3)
我怀疑问题是JSON.parse
期待格式良好的JSON,并且在格式良好的JSON中,密钥需要双引号:
[{"value":228,"color":"#B3A11A"},{"value":255,"color":"#948299"},{"value":1,"color":"#5108C5"},{"value":271,"color":"#A86199"},{"value":246,"color":"#6A8869"}]