setTimeout与ajaxStart无法正常工作

时间:2016-12-30 10:39:12

标签: javascript jquery ajax settimeout

我想在执行ajax请求期间延迟加载gif的外观,这样如果请求的持续时间不超过一秒,它就不会显示出来。即使gif显示没有增加很大的延迟,当我在setTimout函数中设置值超过80时,它也不会。我错过了什么?

function ajaxLoading()
{
    $(document).ajaxStart(function () 
    {
        ajaxLoadingTimeout = setTimeout(function () {
            $('#loading').show();
        }, 1000)

    });

    $(document).ajaxStop(function () {
        clearTimeout(ajaxLoadingTimeout);
        $('#loading').hide();
    });
}

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

function ajaxLoading()
{    
    var flag=true;
    $(document).ajaxStart(function () 
    {
        flag=true;
        ajaxLoadingTimeout = setTimeout(function () {
            if(flag){
               $('#loading').show();
            }
        }, 1000)

    });

    $(document).ajaxStop(function () {
        flag=false;
        clearTimeout(ajaxLoadingTimeout);
        $('#loading').hide();
    });
}

答案 1 :(得分:0)

根据评论更新了答案

function ajaxLoading()
{
    $('document')
    .ajaxStart(function(){
        $("#loading").delay(1000).show();
    })
    .ajaxStop(function(){
        $("#loading").hide();
        $(this).unbind("ajaxStart");
    });
}