Показывать только один Ajax-индикатор на странице с большим их количеством - PullRequest
0 голосов
/ 08 июня 2009

У меня много Ajax-индикаторов на странице. Теперь я использую

        $(document).ajaxStart(function() {
        $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').css({ display: "inline" });
    }).ajaxStop(function() {
        $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').hide();
    });

Проблема в том, что я показываю все индикаторы. Есть ли способ показать только один?

я использую asp.net mvc

ОБНОВЛЕНИЕ: Проблема в том, как в $ (document) .ajaxStart (function () {знать, какой индикатор показывать

Ответы [ 3 ]

2 голосов
/ 08 июня 2009

Поскольку вы используете Asp.net MVC, вы должны использовать объект AjaxOptions, чтобы указать функции, которые будут вызываться, когда вы запрашиваете инициирует / завершает / успешно / терпит неудачу. Внутри этих функций вы можете показать / скрыть свой индикатор.

Мы делаем это следующим образом (включение / отключение индикатора «загрузки» с помощью OnBegin / OnComplete):

<%= Ajax.ActionLink(..., new AjaxOptions { ..., 
    UpdateTargetId = 'blabla', 
    OnBegin = "msg_activate", 
    OnComplete = "msg_hide", 
    OnSuccess = "funcOnSuccess", 
    OnFailure = "funcOnFailure" })
%>

Тогда внутри вашего msg_activate / msg_hide вы можете получить что-то вроде этого:

function msg_activate(response) { 
    $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').css({ display: "inline" });
}

function msg_hide() {
    $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').hide();
}

РЕДАКТИРОВАТЬ: Вы можете сделать это также с jQuery, но только если вы делаете ajax-запрос с jQuery . В этом случае вы можете использовать опции beforeSend , complete , success и error . Просто посмотрите на примеры .

1 голос
/ 08 июня 2009

Я думаю, что событие jquery ajaxStart вызывается для каждого запроса ajax, сделанного на этой странице. Ваш код выполняет прикрепление нескольких обработчиков событий к одному и тому же событию, и для каждого запроса ajax вызываются все обработчики.

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

0 голосов
/ 08 июня 2009

Единственный способ запуска нескольких элементов - это если у вас есть несколько элементов с одинаковым идентификатором.

Возможно ли, что ваш "<% = partido.PartidoId.ToString ()%>" не превращается в правильный идентификатор и вместо этого интерпретируется буквально?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...