Ознакомьтесь с документацией $.ajax
. У вас есть возможность передавать различные обратные вызовы (возможно, не для того, чтобы вывести «готовое состояние», но достаточно для индикатора):
beforeSend(jqXHR, settings)
Функция
Функция обратного вызова перед запросом, которую можно использовать для изменения объекта jqXHR
(в jQuery 1.4.x, XMLHTTPRequest
) перед его отправкой. Используйте это для установки пользовательских заголовков и т. Д. Карты jqXHR
и settings
передаются в качестве аргументов. Это Ajax Event. Возвращение false
в функции beforeSend
отменяет запрос. Начиная с jQuery 1.5, опция beforeSend
будет вызываться независимо от типа запроса.
success(data, textStatus, jqXHR)
Функция, Массив
Функция, вызываемая в случае успешного выполнения запроса. Функция получает три аргумента: data
, возвращаемый с сервера, отформатированный в соответствии с параметром dataType
; строка, описывающая статус; и объект jqXHR
(в jQuery 1.4.x, XMLHttpRequest
). Начиная с jQuery 1.5, настройка успеха может принимать массив функций. Каждая функция будет вызываться по очереди. Это Ajax Event .
error(jqXHR, textStatus, errorThrown)
Функция
Функция, вызываемая в случае сбоя запроса. Функция получает три аргумента: объект jqXHR
(в jQuery 1.4.x, XMLHttpRequest
), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел. Возможные значения для второго аргумента (кроме null
): "timeout"
, "error"
, "abort"
и "parsererror"
. Это Ajax Event . Начиная с jQuery 1.5, параметр error
может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменных сценариев и запросов JSONP.
complete(jqXHR, textStatus)
Функция, Массив
Функция, вызываемая при завершении запроса (после выполнения обратных вызовов success
и error
). Функция получает два аргумента: объект jqXHR
(в jQuery 1.4.x, XMLHTTPRequest
) и строку, классифицирующую статус запроса ("success"
, "notmodified"
, "error"
, "timeout"
, "abort"
или "parsererror"
). Начиная с jQuery 1.5, параметр complete
может принимать массив функций. Каждая функция будет вызываться по очереди. Это Ajax Event .
Поэтому лучше всего было бы показать индикатор в обратном вызове, переданном на beforeSend
, и спрятать его в complete
.
Пример:
Так что вам придется переписать ваш код как:
$.ajax({
url: 'ajax/test.html',
type: 'POST',
beforeSend: function() {
// show indicator
},
complete: function() {
// hide indicator
},
success: function(data) {
$('.result').html(data);
}
});
хотя я не понимаю, почему вы используете POST, поскольку вы не отправляете никаких данных (по крайней мере, в вашем примере кода).