在我的web應用程序中,點擊一個特定的按鈕時,觸發AJAX調用。在服務器端,我想執行對數據庫的查詢。停止執行查詢的AJAX調用
現在,我想到了這一點,有些查詢正在執行一段時間,也許用戶沒有耐心等待結果,並且想要停止執行。
有沒有辦法添加一個按鈕,點擊時可以阻止以前的AJAX調用執行並且也停止執行查詢?這是一種安全的方法嗎?
我正在使用angularjs,並在服務器端使用C#。
在我的web應用程序中,點擊一個特定的按鈕時,觸發AJAX調用。在服務器端,我想執行對數據庫的查詢。停止執行查詢的AJAX調用
現在,我想到了這一點,有些查詢正在執行一段時間,也許用戶沒有耐心等待結果,並且想要停止執行。
有沒有辦法添加一個按鈕,點擊時可以阻止以前的AJAX調用執行並且也停止執行查詢?這是一種安全的方法嗎?
我正在使用angularjs,並在服務器端使用C#。
對你的問題的相關答案
客戶端是streight向前
How to cancel/abort jQuery AJAX request?
但服務器端並不像客戶端那樣容易,這裏涉及後向前
How do you cancel an AJAX long running MVC action client side (in javascript)?
去了解「取消」您在客戶端是通過採取$ Q服務的優勢要求,創造了延期,然後將其連接到使用「超時」屬性爲$http({})
您的要求的最佳方式函數調用。
function sendSomeRequestToServer() {
var requestCanceler = $q.defer();
var request = $http({
method: "get",
url: "/your/url",
timeout: requestCanceler.promise
});
var promise = request.then(function(response) {
return response.data;
});
promise._requestCanceler = requestCanceler;
return promise;
}
function cancel(requestPromise) {
if (promise && promise._requestCanceler && promise._requestCanceler.resolve) {
promise._requestCanceler.resolve();
}
}
很可能這些函數會被包裝在同一個角度服務中。本教程和代碼歸功於Ben Nadel and his blog。
OP正在討論取消服務器端數據庫操作 – Igor
我會請注意這是客戶端解決方案。 –