从执行查询中停止AJAX调用

时间:2015-11-12 15:22:31

标签: javascript c# angularjs ajax

在我的Web应用程序中,单击特定按钮,将触发AJAX调用。在服务器端,我想对数据库执行查询。

现在,我正在考虑这个问题,有些查询正在执行一段时间,也许用户没有耐心等待结果,并希望停止执行。

有没有办法再添加一个按钮,单击时可以阻止以前的AJAX调用执行,也停止执行查询?这是一种安全的方法吗?

我在服务器端使用angularjs和C#。

2 个答案:

答案 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)?