从MVC返回多个Json对象(Ajax / Jquery)

时间:2013-09-18 10:23:48

标签: jquery ajax asp.net-mvc

您好,

我们正在为一个Web应用程序使用 MVC / JQuery :在一个屏幕用户可以生成图表。现在要求如下:

1)选择图表标准。 (客户/日期范围/图表轴等)

2)按“生成”按钮...进一步调用JQuery,然后通过Ajax Call从服务器获取数据。

3)

public JsonResult GetDayData([DataSourceRequest]DataSourceRequest request,
      string clientID, DateTime? startDate, DateTime? endDate, string SortOrder))
{
    //Makes a call to Stored Procedure
    Stored procedure runs and return multiple datatables (ds.tavles[0], ds.tables[1] etc.
}

4)基于这些数据表,我们需要刷新/创建 4-5图表(假设将从存储过程返回4-5个数据表)

5)我能够return dataTable[0]并创建图表,但我无法找到如何在一次调用中返回多个Json对象以及如何在JQuery / Ajax中处理它们。

一种方法是为每个图表控制器单独设置并返回Json对象,但我不想对存储过程进行多次调用。

有关如何将多个dataTable /或类对象从MVC返回到Ajax Call的任何建议吗?

e.g: Each Json objects can have a same or different structure
DataTable 1: {Category: “A”, Points:20, Percentage:87} 
        {Category: “B”, Points:20, Percentage:87} 

DataTable 1: {Category: “A”, Spots:20, Percentage:87,ExtraInfo: “NA”} 
        {Category: “B”, Spots:20, Percentage:87,ExtraInfo: “NA”} 

由于

2 个答案:

答案 0 :(得分:1)

我建议你尝试这种方式

[HttpPost]
public JsonResult Action()
    {
        MyClass objMyClass = new MyClass();
        objMyClass.lstTables = new List<System.Data.DataTable>();
        objMyClass.lstTables.Add(new System.Data.DataTable());
        objMyClass.lstTables.Add(new System.Data.DataTable());
        return Json(objMyClass);
    }
    public class MyClass
    {
        public List<System.Data.DataTable> lstTables { get; set; }
    }

现在你可以传递n个表

答案 1 :(得分:0)

您可以在一个JSON对象中返回数组(在应用程序中执行此操作,或者如果您愿意,可以从数据库返回一个结果obkect),例如:

{
  [
    {data for table 1},
    {data for table 2},
    ...
  ]
}

或者是否有不同类型,例如

{
  [
    {ChartType1: Type1, Data: {data for table 1}},
    {ChartType2: Type2, Data: {data for table 2}},
    ...
  ]
}