2015-11-12 6 views
0

В моем веб-приложении при нажатии на определенную кнопку запускается вызов AJAX. На стороне сервера я хочу выполнить запрос к БД.Остановить вызов AJAX от выполнения запроса

Теперь я думаю об этом, есть запросы, которые выполняются в течение некоторого периода времени, и, возможно, пользователь не достаточно терпелив, чтобы ждать результатов и хочет остановить выполнение.

Есть ли способ добавить еще одну кнопку, которая при нажатии может остановить предыдущий вызов AJAX от выполнения и ТАКЖЕ прекратить выполнение запроса? И безопасный подход?

Я использую angularjs, наряду с C# на стороне сервера.

ответ

0

Лучший способ пойти об «отмене» ваш запрос на стороне клиента является, воспользовавшись в $ д службе, создавая отложенный, а затем подключите его к вашему запросу, используя свойство «тайм-аут» для $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

ОП говорит об отмене операции базы данных на стороне сервера – Igor

+0

Я буду обратите внимание, что это решение на стороне клиента. –

Смежные вопросы