jQuery如何通过ajax加载多个页面部件

jQuery如何通过ajax加载多个页面部件,jquery,ajax,loading,Jquery,Ajax,Loading,我的页面显示了不同类别的多个表,每个表都是通过ajax加载的 类别的数量可能会有所不同,但我知道在进行ajax调用之前会有多少类别。我同时向他们展示如下: $(function(){ var categories = 3; // this is calculated dynamically var categoriesLoaded = 0; $('#categoryA').load('/getCategoryA', function(){categoriesLoaded

我的页面显示了不同类别的多个表,每个表都是通过ajax加载的

类别的数量可能会有所不同,但我知道在进行ajax调用之前会有多少类别。我同时向他们展示如下:

$(function(){
    var categories = 3; // this is calculated dynamically
    var categoriesLoaded = 0;

    $('#categoryA').load('/getCategoryA', function(){categoriesLoaded++;checkLoadProgress();});
    $('#categoryB').load('/getCategoryB', function(){categoriesLoaded++;checkLoadProgress();});
    $('#categoryC').load('/getCategoryC', function(){categoriesLoaded++;checkLoadProgress();});

    function checkLoadProgress(){
        if(categoriesLoaded == categories){
            $('.spinner').hide();
            $('.categories').show();
        }
    }
});
这是可行的,但我想从你那里知道,这是否是一个体面的方式来实现这一点


我的目标是有一个加载条(也许我已经有足够的信息了),但我真的不喜欢用这种重复功能检查状态的方式。欢迎提供任何提示

我建议您进行一些更改(但通常我认为您的代码不错):

$(函数(){
var categories=3;//这是动态计算的
对于(var categoriesload=0;categoriesload
但是!只有在加载了所有类别且未返回任何内容时,才使用checkLoadProgress(),这就是为什么您似乎可以编写:

$(function(){
    var categories = 3; // this is calculated dynamically

    for(var categoriesLoaded = 0; categoriesLoaded < categories; categoriesLoaded++){
        var charCode = String.charCodeAt('A') + categoriesLoaded;
        var symbol = String.fromCharCode(charCode);
        $('#category'+ symbol).load('/getCategory' + symbol);
        //function() was deleted
    }

    $('.spinner').hide();
    $('.categories').show();
});
$(函数(){
var categories=3;//这是动态计算的
对于(var categoriesload=0;categoriesload
为什么要使用Ajax?服务器的用途是什么?有没有想过让一个类别数组在其中循环?@JustinGingyMcDonald我使用ajax,因为加载表可能需要相当长的时间,用户可以在不加载表的情况下执行其他操作
$(function(){
    var categories = 3; // this is calculated dynamically

    for(var categoriesLoaded = 0; categoriesLoaded < categories; categoriesLoaded++){
        var charCode = String.charCodeAt('A') + categoriesLoaded;
        var symbol = String.fromCharCode(charCode);
        $('#category'+ symbol).load('/getCategory' + symbol);
        //function() was deleted
    }

    $('.spinner').hide();
    $('.categories').show();
});