2013-01-17 102 views
2

我意識到有很多已經存在的進度條相關問題。我瀏覽了其中的很多內容,無法讓事情順利進行。

簡而言之,我正在JSP中開發一個頁面,我想在引導過程中使用動畫進度條來顯示數據的調用。

HTML:

<div class="row-fluid"> 
    <div class="span12 progress progress-striped active"> 
     <div id="searchAnimation" class="bar" hidden="true"></div> 
    </div> 
</div> 

Servlet的(不知道這部分是相關的,但有備無患):

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{ 
    //String that gets returned as HTML 
    StringBuilder returnAsHTML = new StringBuilder(); 

    //See if the class is closed, has a lab, or is just a regular class 
    for(ClassInfo classes : springClassListings) 
    { 
     //Class is full, style accordingly 
     if(classes.getSectionMeetingInfo().contentEquals("LEC") && classes.getSectionEnrolled().contentEquals("0")) 
     { 
      returnAsHTML.append(closedClass(classes)); 
     } 
     else if(classes.getSectionMeetingInfo().contentEquals("LAB")) //These are labs, style accordingly 
     { 
      returnAsHTML.append(labClass(classes)); 
     } 
     else //These are normal classes without lab components 
     { 
      returnAsHTML.append(openClass(classes)); 
     } 

    } 

    response.setContentType("text/html"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(returnAsHTML.toString()); 
} 

我的腳本:

//Serves up the data 
$('#btnData').click(function() { 

    //THIS IS THE PROGRESS BAR 
    $("#searchAnimation").show(); 

    $.get('daoServlet', function(responseText) { 
     $('#dataDisp').html(responseText); 
    }); 

}); 

我得到這個想法,即進度條的寬度,即$ .get調用獲取數據的位置。我只是不明白如何去做。

PS - 我知道我的/如果在doGet是一個討厭的反模式,我只是還沒有想出一個方法呢。

+0

可以做你想做的事情,但是我很肯定它會比你願意實現的方式更多(而且更重要的是能夠設置進度條的百分比)到請求的實際完成百分比。你最好只使用動畫GIF。它需要websockets或來回請求以及對服務器端的更改,以允許其他腳本找出進程的距離並生成一個%。 –

+0

@KevinB是的,我有一個實現,我只是不喜歡它。儘管如此,謝謝你的誠實答覆。 –

+0

基本上,你必須解決的問題是你必須能夠在客戶端上計算服務器處理和返回請求的時間。在大多數情況下,沒有內置的方法可以做到這一點,因此,流程必須通知客戶端進展情況(例如Websockets),或者流程需要將該信息提供給客戶需要的後續請求使(長輪詢)獲得該值。 –

回答