2013-06-24 89 views
0

我是javascript新手,我需要維護一個站點。 實際功能是將多張卡片下載到一個文件中,每個卡片一張卡片。由於用戶可以擁有大量的卡片,治療並不總是成功(太多標籤),所以我想創建一個文件例如20個標籤。javascript - 下載幾個文件

var printTerm = function(grid){ 
    var rows = grid.selected; 
    if(rows==null) return; 
    var ids = rows.map(function(val){return grid.getDataByRow(val).num_terme;}); 
    var nbMax = 20; 
    var nbFic; 
    var idsPartiel;  
    var posDebut; 
    var posFin; 
    var a;  
    if(ids.length > nbMax) 
    {  
     idsPartiel = ids; 
     if(ids.length % nbMax == 0)  nbFic = ids.length/nbMax; 
     else       nbFic = ((ids.length - (ids.length % nbMax))/nbMax) + 1; 
     for (i=0 ; i< nbFic ; i++) 
     {  
       posDebut = (nbMax * i); 
       if(i == nbFic - 1)  posFin = idsPartiel.length + 1; 
       else     posFin = posDebut + nbMax; 
       ids = idsPartiel.slice(posDebut,posFin); 
       a = new Element('a', 'id':'download','href':'php/utils/export2pdf.php?ids='+ids.join(',')}) 
         .addEvent('click',function(){location.href=this.href;}).inject(document.body); 
       a.fireEvent('click');    
       a.dispose(); 
     }  
    }  
    else 
    { 
     a = new Element('a',{'id':'download','href':'php/utils/export2pdf.php?ids='+ids.join(',')}) 
       .addEvent('click',function(){location.href=this.href;}).inject(document.body); 
     a.fireEvent('click'); 
     a.dispose(); 
    }  
}; 

當卡的數量小於或等於nbMax,它工作得很好,卜時,必須有幾個文件,而不是:只在循環的最後一段是創建該文件。 當我試圖看看螢火蟲發生了什麼,我看到我的治療線,但只有最後一個結束。 感謝您的幫助。

回答

0

如果我正確讀取了您的代碼,您正試圖使瀏覽器將大量文件下載到單獨的選項卡中。大多數瀏覽器並不會真正感謝你試圖通過這種方式啓動一個下載循環,用戶也不希望有那麼多保存爲可能彈出的對話框。

你會更好的將它們打包到zip文件服務器端併發送一個文件。它會更有效率,更方便用戶使用。

+0

非常感謝,你說得對。我會試試這個。 – Brice