多个ajax调用ASP.MVC Async无法正常工作

时间:2014-11-28 11:46:51

标签: c# jquery ajax asp.net-mvc asynchronous

我有一个带有多个ajax调用的视图,这些调用填充了视图本身,所以它是一个页面,有一些ajax调用来填充该页面的内容。

我想将呼叫设为异步,所有呼叫同时响铃,并在同一时间执行。

所以,如果我有6个电话,我想要像:

Start -18:01:01  -18:01:01  -18:01:01  -18:01:01  -18:01:01  -18:01:01
End  -18:01:15  -18:01:11  -18:01:09  -18:01:02  -18:01:02  -18:01:12

所以没有方法可以阻止另一个。

我尝试过投放:[SessionState(SessionStateBehavior.Disabled)]

并将控制器更改为AsyncController

但我得到的结果是:

GetChartFacturForComer Ini 12:17:30 - 829
GetChartFacturForComer fini 12:17:30 - 936

GetChartTotalMonthFacturation Ini 12:17:30 - 943
GetChartTotalMonthFacturation fIni 12:17:31 - 062

GetChartActivityForDate Ini 12:17:31 - 480
GetChartActivityForDate fIni 12:17:31 - 626

GetChartActivityForClientType Ini 12:17:31 - 980
GetChartActivityForClientType fIni 12:17:32 - 221

GridIndex Ini 12:17:34 - 575
GridIndex fIni 12:17:36 - 264

GetChartActivityForSales Ini 12:17:36 - 596
GetChartActivityForSales fIni 12:17:36 - 931

其中Ini是方法的开头,fIni是结束。对于结果,很明显每个方法都是在前一个方法完成之后执行的,但这不是我想要的......

我只找到了Session和asynccontroller解决方案,但它无法正常工作。我错过了什么?我必须改变我的代码吗?

注意:我的方法不是asyn,但是对于我所读到的,它不是必需的。

我的代码:

public class AsyncBaseController  : AsyncController{
    // code
}

public class HomeController : AsyncBaseController{
    public JsonResult GetChartFacturForComer(){
        //LongMethod 1
    }
    public JsonResult GetChartTotalMonthFacturation(){
        //LongMethod 2
    }
    public JsonResult GetChartActivityForClientType(){
        //LongMethod 3
    }
    public JsonResult GetChartActivityForSales(){
        //LongMethod 4
    }
    public JsonResult GetChartActivityForDate(){
        //LongMethod 5
    }
    public JsonResult GridIndex(){
        //LongMethod 6
    }
}

注意:调用是kendo组件,我不知道这是否会影响,但信息是信息。

修改

正如我所提到的,jquery中的调用来自kendo组件,我们正在使用剃刀助手,所以我有类似的东西:

  

@ Html.Kendo()。Chart(“FirstChart”)。DataSource(ds =>   ds.Read(“GetChartFacturForComer”,“Home”));   @ Html.Kendo()。Chart(“SecondChart”)。DataSource(ds =>   ds.Read(“GetChartTotalMonthFacturation”,“Home”));   @ Html.Kendo()。Chart(“ThirdChart”)。DataSource(ds =>   ds.Read(“GetChartActivityForClientType”,“Home”));   @ Html.Kendo()。Chart(“FourthChart”)。DataSource(ds =>   ds.Read(“GetChartActivityForSales”,“Home”));   @ Html.Kendo()。Chart(“FifthChart”)。DataSource(ds =>   ds.Read(“GetChartActivityForDate”,“Home”));   @ Html.Kendo()。网格(“网格”).DataSource(dataSource => dataSource                           .Ajax()。Read(read => read.Action(“Grid”,“Home”));

和Js

$.ajax({
            url: configuration.url,
            success: function (data) {
                Chart.LoadDynamicChartWithLegend(configuration.optionsToLoadDynamicChartWithLegend, data);
            }
        });

我获取图表的参数并为每个图表调用$ .ajax。

0 个答案:

没有答案