Как назвать .ajaxStart () на определенных вызовах ajax

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

// Unique ID from database
private int _id;

...    
{
  return _id.GetHashCode();
}
47
задан kevzettler 28 July 2009 в 01:23
поделиться

2 ответа

2018 ПРИМЕЧАНИЕ: Этот ответ устарел; не стесняйтесь предлагать отредактировать этот ответ, который будет работать.

Вы можете связать ajaxStart и ajaxStop, используя настраиваемое пространство имен:

$(document).bind("ajaxStart.mine", function() {
    $('#ajaxProgress').show();
});

$(document).bind("ajaxStop.mine", function() {
    $('#ajaxProgress').hide();
});

Затем в других частях сайта вы временно отключите их перед ваш .json вызывает:

$(document).unbind(".mine");

Идея пришла из здесь при поиске ответа.

РЕДАКТИРОВАТЬ: У меня не было времени, чтобы проверить это, увы.

35
ответ дан 26 November 2019 в 19:40
поделиться

К сожалению, событие ajaxStart не содержит никакой дополнительной информации, которую вы можете использовать для решить, показывать анимацию или нет.

В общем, вот одна идея. Почему бы в вашем методе ajaxStart не запустить анимацию, скажем, через 200 миллисекунд? Если запросы ajax завершаются за 200 миллисекунд, вы не показываете никакой анимации, в противном случае вы показываете анимацию. Код может выглядеть примерно так:

var animationController = function animationController()
{
    var timeout = null;
    var delayBy = 200; //Number of milliseconds to wait before ajax animation starts.

    var pub = {};

    var actualAnimationStart = function actualAnimationStart()
    {
        $('#ajaxProgress').show();
    };

    var actualAnimationStop = function actualAnimationStop()
    {
        $('#ajaxProgress').hide();
    };

    pub.startAnimation = function animationController$startAnimation() 
    { 
        timeout = setTimeout(actualAnimationStart, delayBy);
    };

    pub.stopAnimation = function animationController$stopAnimation()
    {
        //If ajax call finishes before the timeout occurs, we wouldn't have 
        //shown any animation.
        clearTimeout(timeout);
        actualAnimationStop();
    }

    return pub;
}();


$(document).ready(
    function()
    {
        $(document).ajaxStart(animationController.startAnimation);
        $(document).ajaxStop(animationController.stopAnimation);
    }
 );
4
ответ дан 26 November 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: