簡體   English   中英

當用戶在收到響應之前導航時,ASP.NET MVC控制器會發生什么?

[英]What happens to an ASP.NET MVC controller when the user navigates away before a response is received?

我有一個AJAX操作,可能需要幾分鍾才能完成,具體取決於所涉及的數據量。 如果用戶在此操作仍在運行時感到沮喪並導航,控制器會發生什么? 它還是完整的嗎? 是否知道應該放棄請求並處置控制器對象?

它不會取消對服務器的請求,因為導航的行為不會向服務器發送有關該請求的任何信息。 但是,客戶端(瀏覽器)將停止監聽它。 請求完成后,無論客戶端是否正在偵聽它,控制器都會按照通常的方式進行處理。

話雖如此,您可能會喜歡並使用在客戶端監聽頁面更改和在服務器上調用AJAX請求abort的組合。

這個SO問題討論了如何中止請求。 我可以設想在你第一次啟動AJAX請求時設置變量,然后在完成時取消設置。

警告 - 下面的偽代碼

var isProcessing = false;

var xhr = $.ajax({
    type: "POST",
    url: "myUrl",
    beforeSend: function(){
       isProcessing = true;
    }
    complete: function(){
       isProcessing = false;
    }
});

window.onbeforeunload = function(){
   if(isProcessing){
       xhr.abort();
   }
}

以上是這個概念的基本概念,但是如果xhr對象存在,可能還應該進行一些檢查,也許還可以綁定/取消綁定beforeSend中的window.onbeforeunload.ajax()項的完整對象處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM