Поскольку вы уже используете jQuery, возможно, вы захотите изучить BlockUI в сочетании с ответом Дарина Димитрова . Я еще не использовал его сам, поскольку только что столкнулся с этим сегодня, но это выглядит прилично.
Если вы пишете приложение полуширокого размера и ожидаете много вызовов AJAX из разных мест в вашем коде, я бы посоветовал вам добавить слой абстракции над $.ajax
или создать вспомогательную функцию для Избегайте повсеместного использования котельной пластины для вашего индикатора пользовательского интерфейса. Это очень поможет вам, если вам когда-нибудь понадобится изменить индикатор.
Метод абстракции
var ajax = function(options) {
$.ajax($.extend(
{
beforeSend: function() {
$.blockUI();
},
complete: function() {
$.unblockUI();
}
},
options
));
};
ajax({
url: 'script.cgi',
type: 'POST',
success: function(result) {
// todo: do something with the result
});
Вспомогательный метод
var ajaxSettings = function(options) {
return $.extend(
{
beforeSend: function() {
$.blockUI();
},
complete: function() {
$.unblockUI();
}
},
options
);
};
$.ajax(ajaxSettings({
url: 'script.cgi',
type: 'POST',
success: function(result) {
// todo: do something with the result
}
}));
Кроме того, я бы не советовал перезаписывать сам метод $.ajax
.