2015-11-12 81 views
0

在我的web应用程序中,点击一个特定的按钮时,触发AJAX调用。在服务器端,我想执行对数据库的查询。停止执行查询的AJAX调用

现在,我想到了这一点,有些查询正在执行一段时间,也许用户没有耐心等待结果,并且想要停止执行。

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

我正在使用angularjs,并在服务器端使用C#。

回答

0

去了解“取消”您在客户端是通过采取$ 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

+0

OP正在讨论取消服务器端数据库操作 – Igor

+0

我会请注意这是客户端解决方案。 –