0

サーバーに独自の ajax 呼び出しを行う 2 つの jquery ボタン イベントがあります。ただし、最初のボタンをクリックしてから、最初のボタンが独自の ajax 呼び出しで「成功」に戻る前に 2 番目のボタンをクリックすると、(2 番目のボタンを介した) 2 番目の 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 リクエストが含まれます。そうしないと、別のコントローラーがセッションにアクセスしているときにコントローラーがセッションに書き込もうとすると、セッションが破損する可能性があります。

MVC 3 では[SessionState(SessionStateBehavior.Disabled)]、コントローラーに追加することでこれを回避できます。セッションレスコントローラーに関する情報を次に示します。非同期コントローラーは別の回避策になる場合があります。

于 2013-02-21T23:33:44.710 に答える