1

一度に1つずつロードしたい関数のリストがあります。データをロードしてから次のデータに移動することはできません。これが私のコードです:

$(document).ready(function() {
    //step through the data sets
    var count = 1;
    if (count = 1) {
        loadingAjax('connectConferenceData','connectAttendanceData',count);
    }
    if (count = 2) {
        loadingAjax('connectWorkshopData','cwsData',count);
    }
    if (count = 3) {
        loadingAjax('relayCenterData','rcData',count);
    }
    if (count = 4) {
        loadingAjax('collectionCenterData','ccData',count);
    }
    if (count = 5) {
        loadingAjax('regionalStatsData','rsData',count);
    }
    if (count > 5) {
        $("#statusMsg").html('All tools have been loaded.').fadeIn('slow');
        setTimeout(function() {
            $('#statusMsg').fadeOut();
        }, 10000 );
    }
});

//function to get datasets
function loadingAjax(div_id,action_id,count) {  
    $("#loading").show();
    $("#"+div_id).html('<img src="images/admin_uploading.gif"> Loading data...');  

    $.ajaxSetup ({  
        cache: true  
    }); 

    $.ajax({  
        type: "GET",  
        url: "dashboard_functions.php",  
        data: "actionID="+action_id,  
        success: function(data){  
            $("#"+div_id).html(data).fadeIn();
            count++; 

            if (count != 6) {
                $("#statusMsg").html('<img src="./images/admin_uploading.gif" /> Loading data for tool #'+count+' loading'); 
            }

            $("#loading").hide();
        }  
    });  
} 
4

4 に答える 4

0

$(document).ready(function(){...ページの読み込み時にのみ実行され、最初のステップのみが実行されます。ajax呼び出しの成功ハンドラーで後続のステップを実行してみてください

于 2012-11-02T17:27:58.740 に答える
0

$.ajax()コールセットでasync: false

countその場合、変数やさまざまなifステートメントも必要ありません。

于 2012-11-02T17:26:51.870 に答える
0

次のような一連のコールバックを設定できます。

//step through the data sets
function DataSetStep(count){
 if (count == 1) {
    loadingAjax('connectConferenceData','connectAttendanceData',count);
 }
 if (count == 2) {
    loadingAjax('connectWorkshopData','cwsData',count);
 }
 if (count == 3) {
    loadingAjax('relayCenterData','rcData',count);
 }
 if (count == 4) {
    loadingAjax('collectionCenterData','ccData',count);
 }
 if (count == 5) {
    loadingAjax('regionalStatsData','rsData',count);
 }
 if (count > 5) {
    $("#statusMsg").html('All tools have been loaded.').fadeIn('slow');
    setTimeout(function() {
        $('#statusMsg').fadeOut();
    }, 10000 );
 }
}

$(document).ready(function() {
 DataSetStep(1);
});

//function to get datasets
function loadingAjax(div_id,action_id,count) {  
 $("#loading").show();
 $("#"+div_id).html('<img src="images/admin_uploading.gif"> Loading data...');  

 $.ajaxSetup ({  
    cache: true  
 }); 

 $.ajax({  
    type: "GET",  
    url: "dashboard_functions.php",  
    data: "actionID="+action_id,  
    success: function(data){  
        $("#"+div_id).html(data).fadeIn();
        count++; 

        if (count != 6) {
            $("#statusMsg").html('<img src="./images/admin_uploading.gif" /> Loading data for tool #'+count+' loading'); 
        }

        $("#loading").hide();
        DataSetStep(count);
    }  
 });  
} 
于 2012-11-02T17:31:31.153 に答える
0

あなたはそれを再帰的に行うこともできます:

$(function () {
    // This is global, so do it once, outside the function
    $.ajaxSetup ({  
        cache: true  
    }); 

    loadingAjax('connectConferenceData','connectAttendanceData',1);

    function loadingAjax(divId, actionId, count) {
        $("#"+div_id).html('<img src="images/admin_uploading.gif"> Loading data...');  
        if (count !== 6) {
            $("#statusMsg").html('<img src="./images/admin_uploading.gif" /> Loading data for tool #'+count+' loading'); 
        }
        $.ajax({  
            type: "GET",  
            url: "dashboard_functions.php",  
            data: "actionID="+action_id,  
            success: function(data){  
                $("#"+div_id).html(data).fadeIn();
                count++;

                if (count === 2) {
                    loadingAjax('connectWorkshopData','cwsData',count);
                }
                if (count === 3) {
                    loadingAjax('relayCenterData','rcData',count);
                }
                if (count === 4) {
                    loadingAjax('collectionCenterData','ccData',count);
                }
                if (count === 5) {
                    loadingAjax('regionalStatsData','rsData',count);
                }
                if (count > 5) {
                    $("#statusMsg").html('All tools have been loaded.').fadeIn('slow');
                    setTimeout(function() {
                        $('#statusMsg').fadeOut();
                    }, 10000 );
                }
                $("#loading").hide();
            }  
        });    
    }
});
于 2012-11-02T17:50:38.413 に答える