javascript - 具有多个加载指示器的多个 AJAX 调用

标签 javascript jquery html ajax

我在 ASP.net MVC 中有一个页面,我使用 ajax 调用为每个 div 加载数据,其中有 6 个 div。我已经编写了两种方法来显示/隐藏 div 的加载指示器,如下所示。

$("#divId").loading(); 
$("#divId").stopLoading();  

这是我的 ajax 调用之一(全部相同)

 $.getJSON("RequestPerameters", function (result, textStatus, jqHXR)
    {
        $("#today-apt").stopLoading();

       //Populate Today-apt div
    });

加载和停止加载方法的定义

    (function ($)
    {
        $.fn.Loading = function ()
        {
            $(this).children().hide();
            $(this).append("<img src='/Images/loading.gif' class='center-block' />");
            return this;
        };

        $.fn.stopLoading = function ()
        {
            $(this).children(":visible").remove();
            $(this).children().show();
            return this;
        };
    })(jQuery);

下面是进行 ajax 调用的就绪方法。

 $(function ()
{


    $("#up-appointments").Loading();
    $("#mySales").Loading();
    $("#todays-appointments").Loading();
    $("#today-performance").Loading();
    $("#c-feed").Loading();

    loadPerformanceModal();
    loadAppointments();
    loadPTOs();// should be right after laodAppointments
    loadMySales();
    loadUpCommingAppointments();
    loadUpCommingPTOs(); // should be right after loadUpCommingAppointments
    loadCustomFeedback();
});

效果很好。当数据加载到div中时,有时会出现此问题 但指示器确实隐藏了它自己。大多数时候它工作正常。

您能告诉我这是否是由于多个同时 AJAX 调用造成的吗?如果有任何解决方法。

最佳答案

return $.getJSON() 从函数调用中调用,使用 $.when(), .then() $.when()

中链接异步调用
$(function () {

    var loadingDivs = "#up-appointments,#mySales,#todays-appointments"
                      + ",#today-performance,#c-feed";
    $(loadingDivs).Loading();

    $.when(loadPerformanceModal()
      , loadAppointments()
        .then(function() {return loadPTOs()})// should be right after    
      , laodAppointments()
      , loadMySales()
      , loadUpCommingAppointments()
        .then(function() {return loadUpCommingPTOs()}) // should be right after  
      , loadUpCommingAppointments()
      , loadCustomFeedback()
    )
    .then(function(...responses) {
      console.log(responses)
    })
    .fail(function(jqxhr, textStatus, errorThrown) {
      console.log(errorThrown)
    });
});

关于javascript - 具有多个加载指示器的多个 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189417/

相关文章:

html - 使用 css 相对和绝对包装图像

html - IE 忽略响应头中的 X-UA-Compatible IE=edge

javascript - 在执行回调之前我不知道如何返回 true 或 false

javascript - npm install --saveexpress@4.10.2 是什么意思以及如何使用它?

javascript - 如何更改图表中柱形的颜色?

jquery - CSS "onclick"伪类不工作

javascript - 如何从同一 <td> 标记下通过复选框值获取隐藏值

javascript - react 路由器中的相对路由

javascript - 将 jquery 条件为 (':checked' ) 转换为 bool 数组

javascript - HTML 中的数据处理,无需服务器代码(仅使用 Javascript)