在我的Web应用程序中,单击特定按钮,将触发AJAX调用。在服务器端,我想对数据库执行查询。
现在,我正在考虑这个问题,有些查询正在执行一段时间,也许用户没有耐心等待结果,并希望停止执行。
有没有办法再添加一个按钮,单击时可以阻止以前的AJAX调用执行,也停止执行查询?这是一种安全的方法吗?
我在服务器端使用angularjs和C#。
答案 0 :(得分:0)
最好的方式去取消"取消"您在客户端的请求是利用$ q服务,创建延迟,然后使用" timeout"将其附加到您的请求中。 $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获得教程和代码。
答案 1 :(得分:0)
您问题的相关答案
客户端正在向前发展
How to cancel/abort jQuery AJAX request?
但是服务器端不像客户端那么容易,这里有相关的帖子向前推进
How do you cancel an AJAX long running MVC action client side (in javascript)?