0

我有 2 个 jquery 按钮事件使他们自己的 ajax 调用回服务器。但是,当我单击第一个按钮,然后在第一个按钮在其自己的 ajax 调用中返回“成功”之前单击第二个按钮时,第二个 ajax 调用(通过第二个按钮)无法连接到服务器并在其自己的 ajax 调用中调用“错误”处理。这是预期的行为吗?是否有用于强制 ajax 调用连续发生的按钮单击事件的内置机制?我会很感激帮助!注意:我正在使用 MVC 3,顺便说一句。

   $.ajax({
       type: "POST",
       url: '@Url.Action("getExecAvgDaysToClose")',
       error: function (xhr, status, err) {
           alert("An error occurred between server and browser: " + err);
       },
       success: function (response) {
          var data = new google.visualization.DataTable(response);
          var options = {
              width: gaugeWidth, height: gaugeHeight,
              redFrom: @Model.ChartConfig.ExecStatusRedFrom, redTo: @Model.ChartConfig.ExecStatusRedTo,
              yellowFrom: @Model.ChartConfig.ExecStatusYellowFrom, yellowTo: @Model.ChartConfig.ExecStatusYellowTo,
              greenFrom:@Model.ChartConfig.ExecStatusGreenFrom, greenTo: @Model.ChartConfig.ExecStatusGreenTo,
              greenColor: defaultGreenColor,
              yellowColor: defaultYellowColor,
              redColor: defaultRedColor,
              max: @Model.ChartConfig.ExecStatusMax,
              minorTicks: 3
          };
         var chart = new google.visualization.Gauge(document.getElementById('eAveDaysClose'));

    doDrawChart(chart, data, options);

   }

});

4

1 回答 1

1

问题可能是由于ASP.NET Session State. 我相信从同一个会话发出的所有请求都被序列化并默认并发运行,而不是并行运行。这包括 ajax 请求。否则,如果一个控制器尝试写入 Session 而另一个控制器正在访问它,则 Session 可能会损坏。

在 MVC 3 中,您可以通过添加[SessionState(SessionStateBehavior.Disabled)]到控制器来解决此问题。以下是关于无会话控制器的一些信息异步控制器可能是另一种解决方法。

于 2013-02-21T23:33:44.710 回答