在我的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
我会请注意这是客户端解决方案。 –