[英]How to destroy session in ASP.net when user navigates away from the page or exits the browser
[英]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.