2012-12-14 68 views
0

我的頁面顯示了不同類別的多個表格,每個表格都通過ajax加載。jQuery如何通過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(); 
     } 
    } 
}); 

這工作和所有的,但我想從你知道這是完成這一個體面的方式。

我的目標是有一個加載欄(也許我已經有足夠的信息),但我真的不喜歡我檢查狀態,與重複功能的方式。任何提示歡迎

+0

爲什麼使用Ajax?什麼是服務器用於? –

+1

有沒有想過有一個類別的數組,然後通過它循環? – bobthyasian

+0

@JustinGingyMcDonald我正在使用ajax,因爲這些表可能需要一段時間才能加載,用戶可以在未加載時執行其他操作 – Hartimer

回答

0

我建議你做一些修改(但一般我認爲你的代碼是不壞):

$(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(){categoriesLoaded + 1;checkLoadProgress();}); 
    } 

    function checkLoadProgress(){ 
     if(categoriesLoaded == categories){ 
      $('.spinner').hide(); 
      $('.categories').show(); 
     } 
    } 
}); 

BUT!你只有在加載所有類別時才使用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(); 
}); 
相關問題