29 декабря 2011 г.

Индикатор выполнения AJAX-запроса, в ASP.Net MVC

Сегодня практически каждая страница сайта выполняет какие-то AJAX-действия. Чаще всего эти запросы довольно "легкие", и не требуют длительного времени выполнения. Но иногда все-же встречаются ситуации, когда прежде чем выдать ответ, на сервере должен отработать немалый кусок логики с подключениями к БД или каким-либо сторонним ресурсам. В таких случаях пользователю нужно дать понять, что процесс пошел, и запрос находится на выполнении.

Итак, сегодня мы будем делать визуальную индикацию выполнения AJAX-запроса.

Рассмотрим реальный случай.
На странице у нас имеется кнопка, по нажатию на которую делается аджакс-запрос на сервер, где отработка кода занимает 2-3 секунды т.к. получается и обрабатывается большой кусок данных. Все происходит без перезагрузки страницы, тоесть нужно предпринять какие-то меры для того, чтобы в процессе ожидания пользователь не нажал на кнопку повторно, не зная, что запрос уже обрабатывается.

Сделаем следующее - после нажатия на кнопку запроса, дадим пользователю понять, что процесс запущен, и отберем у него возможность что-либо делать на сайте, пока не будет получен ответ с сервера.