2015-11-12 134 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

我會請注意這是客戶端解決方案。 –