参考link上发布的问题,如何使用ajax从控制器返回以下格式的数据?令人困惑的部分是,如果data属性是一个对象数组 - 带有字符串和整数属性;那么为什么属性名称不随数据出现?如果它是一个数组数组,那么如何有一个不同类型的项目数组呢?
{
'Animals': {
name: 'Animals',
data: [
['Cows', 2],
['Sheep', 3]
]
},
'Fruits': {
name: 'Fruits',
data: [
['Apples', 5],
['Oranges', 7],
['Bananas', 2]
]
},
'Cars': {
name: 'Cars',
data: [
['Toyota', 1],
['Volkswagen', 2],
['Opel', 5]
]
}
}
我使用以下代码来调用控制器:
$('#container').highcharts({
chart: {
type: 'column',
events: {
drilldown: function (e) {
if (!e.seriesOptions) {
var chartObject = this;
$.ajax({
url: '@Url.Action("ActionMethodName")',
type: "GET",
cache: false,
data: e.point.name,
datatype: "json",
success: function (dataList) {
debugger;
var chart = chartObject,
drilldowns = dataList, //dataList must be in the required format.
series = drilldowns[e.point.name];
chart.addSeriesAsDrilldown(e.point, series);
},
error: function () {
}
});
// The rest of the code below
//
//
答案 0 :(得分:1)
如果使用该格式生成类,然后将该类的对象作为Action Results中的序列化内容返回,则会更好。所以你需要做以下事情
1)从JSon格式创建类。有多种在线工具可供选择,例如http://json2csharp.com/
2)填充类的对象后,可以使用Javascript Serializer序列化对象。
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Object);
3)从动作结果中返回json字符串。
return Content(json);