Ajax實現進度條

來源:互聯網
上載者:User

Ajax實現的進度條,如下代碼:

 
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
  2. <html> 
  3. <head> 
  4. <title>Ajax Progress Bar - www.cxybl.com</title> 
  5. <script type="text/javascript"> 
  6. var xmlHttp; 
  7. var key; 
  8. var bar_color = 'gray';//進度條的顏色 
  9. var span_id = "block"; 
  10. var clear = " "; 
  11. function createXMLHttpRequest()//建立XMLHttpRequest對象 
  12. if(window.ActiveXObject) 
  13. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
  14. else if(window.XMLHttpRequest) 
  15. xmlHttp = new XMLHttpRequest(); 
  16. function go() 
  17. createXMLHttpRequest();//建立XMLHttpRequest對象 
  18. checkDiv();//顯示捲軸 
  19. xmlHttp.onreadystatechange = callBack;//設定回呼函數 
  20. var url = "/AjaxDemo/servlet/ProgressBarServlet?task=create";//請求的地址 
  21. var button = document.getElementById("go"); 
  22. button.disabled = true;//設定按鈕不可用 
  23. xmlHttp.open("get",url,true);//開啟對伺服器的串連 
  24. xmlHttp.send();//發送請求 
  25. function callBack() 
  26. if(xmlHttp.readyState == 4) 
  27. if(xmlHttp.status == 200) 
  28. setTimeout("pollServer()",500);//定時調用 
  29. function pollServer() 
  30. createXMLHttpRequest(); 
  31. var url="/AjaxDemo/servlet/ProgressBarServlet?task=poll&key="+key; 
  32. xmlHttp.onreadystatechange = pollCallBack; 
  33. xmlHttp.open("GET",url,true); 
  34. xmlHttp.send(); 
  35. function pollCallBack() 
  36. if(xmlHttp.readyState == 4) 
  37. if(xmlHttp.status == 200) 
  38. var percent_complete = xmlHttp.responseXML.getElementsByTagName("percent")[0] 
  39. .firstChild.data;//從伺服器端獲得響應資訊 
  40. var index = processResult(percent_complete); 
  41. for(var i = 1; i<=index; i++) 
  42. var elem = document.getElementById("block"+i); 
  43. elem.innerHTML = clear; 
  44. elem.style.backgroundColor = bar_color; 
  45. var next_cell = i+1; 
  46. if(next_cell > index && next_cell <= 9) 
  47. document.getElementById("block"+next_cell).innerHTML = percent_complete + "%"; 
  48. if(index <9 ) 
  49. setTimeout("pollServer()",500); 
  50. else 
  51. document.getElementById("complete").innerHTML = "Complete!"; 
  52. document.getElementById("go").disabled = false; 
  53. function processResult(percent_complete) 
  54. var ind; 
  55. if(percent_complete.length == 1) 
  56. ind = 1; 
  57. else if(percent_complete.length == 2) 
  58. ind = percent_complete.substring(0,1); 
  59. else 
  60. ind = 9; 
  61. return ind; 
  62. function checkDiv() 
  63. var progress_bar = document.getElementById("progressBar"); 
  64. if(progress_bar.style.visibility == "visible") 
  65. clearBar(); 
  66. document.getElementById("complete").innerHTML = ""; 
  67. else 
  68. progress_bar.style.visibility = "visible"; 
  69. function clearBar() 
  70. for(var i =1; i<10; i++) 
  71. var elem = document.getElementById("block"+i); 
  72. elem.innerHTML = clear; 
  73. elem.style.backgroundColor = "white"; 
  74. </script> 
  75. </head> 
  76. <body> 
  77. <h1>Ajax Progress Bar Example</h1> 
  78. Launch long-running process: 
  79. <input type="button" value="Launch" id="go" onclick="go()"/> 
  80. <p> 
  81. <table align="center"> 
  82. <tbody> 
  83. <tr> 
  84. <td> 
  85. <div id="progressBar" style="padding:2px;border:solid black 2px;visibility:hidden"> 
  86. <span id="block1"> </span> 
  87. <span id="block2"> </span> 
  88. <span id="block3"> </span> 
  89. <span id="block4"> </span> 
  90. <span id="block5"> </span> 
  91. <span id="block6"> </span> 
  92. <span id="block7"> </span> 
  93. <span id="block8"> </span> 
  94. <span id="block9"> </span> 
  95. </div> 
  96. </td> 
  97. </tr> 
  98. <tr><td align="center" id="complete"></td></tr> 
  99. </tbody> 
  100. </table> 
  101. </body> 
  102. </html> 
  103.  
  104.  
  105. package cn.Ajax.test; 
  106. import java.io.IOException; 
  107. import java.io.PrintWriter; 
  108. import javax.servlet.ServletException; 
  109. import javax.servlet.http.HttpServlet; 
  110. import javax.servlet.http.HttpServletRequest; 
  111. import javax.servlet.http.HttpServletResponse; 
  112. @SuppressWarnings("serial") 
  113. public class ProgressBarServlet extends HttpServlet { 
  114. private int counter = 1; 
  115. /** 
  116. * The doGet method of the servlet. <br> 
  117. * This method is called when a form has its tag value method equals to get. 
  118. * @param request the request send by the client to the server 
  119. * @param response the response send by the server to the client 
  120. * @throws ServletException if an error occurred 
  121. * @throws IOException if an error occurred 
  122. */ 
  123. public void doGet(HttpServletRequest request, HttpServletResponse response) 
  124. throws ServletException, IOException { 
  125. String task = request.getParameter("task"); 
  126. String res=""; 
  127. if(task.equals("create")){ 
  128. res = "<key>1</key>"; 
  129. counter = 1; 
  130. else{ 
  131. String percent = ""; 
  132. switch (counter) { 
  133. case 1: percent = "10";break; 
  134. case 2: percent = "23";break; 
  135. case 3: percent = "35";break; 
  136. case 4: percent = "51";break; 
  137. case 5: percent = "64";break; 
  138. case 6: percent = "73";break; 
  139. case 7: percent = "89";break; 
  140. case 8: percent = "100";break; 
  141. counter++; 
  142. res ="<percent>"+percent+"</percent>"; 
  143. PrintWriter out = response.getWriter(); 
  144. response.setContentType("text/xml"); 
  145. response.setHeader("Cache-Control", "no-cache"); 
  146. out.println("<response>"); 
  147. out.println(res); 
  148. out.println("</response>"); 
  149. out.close(); 
  150. /** 
  151. * The doPost method of the servlet. <br> 
  152. * This method is called when a form has its tag value method equals to post. 
  153. * @param request the request send by the client to the server 
  154. * @param response the response send by the server to the client 
  155. * @throws ServletException if an error occurred 
  156. * @throws IOException if an error occurred 
  157. */ 
  158. public void doPost(HttpServletRequest request, HttpServletResponse response) 
  159. throws ServletException, IOException { 
  160. doGet(request, response); 
  161. }  


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.