Home > Web Front-end > JS Tutorial > Sharing examples of using AJAX to implement progress bars on web pages

Sharing examples of using AJAX to implement progress bars on web pages

亚连
Release: 2018-05-22 10:53:06
Original
1811 people have browsed it

This article mainly introduces the sharing of examples of using AJAX to implement progress bars on Web pages. Using AJAX asynchronously to display the processing progress of the server is a popular practice at the moment. Friends who need it can refer to it

During the installation and downloading process of applications, the use of progress bars has become very common. The progress bar can be used to indicate the completion progress of the project. It can be expressed as a percentage or a number, and can be placed horizontally. Use Ajax technology to create a progress bar, which makes the function more powerful and faster.
Now create an example to demonstrate the use of Ajax technology to implement the progress bar. This example can also be divided into client code and server code.

1, server code
The server code mainly implements a client's request information and returns the corresponding percentage number. Open Notepad and enter the following code:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> 
<%! 
int counter = 1;//注意:多用户将共享此变量,此进度条只适合单用户 
%> 
<% 
 String task = request.getParameter("task"); 
  String res = ""; 
   
  if (task.equals("create")) { 
   res = "1"; 
   counter = 1; 
  } 
  else { 
   String percent = ""; 
   switch (counter) { 
    case 1: percent = "10"; break; 
    case 2: percent = "23"; break; 
    case 3: percent = "35"; break; 
    case 4: percent = "51"; break; 
    case 5: percent = "64"; break; 
    case 6: percent = "73"; break; 
    case 7: percent = "89"; break; 
    case 8: percent = "100"; break; 
   } 
   counter++; 
     
   res = "<percent>" + percent + "</percent>"; 
  } 
   
  // PrintWriter out = response.getWriter(); 
  response.setContentType("text/xml"); 
  response.setHeader("Cache-Control", "no-cache"); 
  out.println("<response>"); 
  out.println(res); 
  out.println("</response>"); 
  out.close();  
%>
Copy after login


Save the above code as ProgressBar.jsp. In this file, a variable counter is declared and assigned a value of 1. This variable is the basis for the percentage number returned by the progress bar. Use the request object below to get the value of the variable task sent by the client. If the value is create, it means that the progress bar needs to be re-created and the value of counter is set to 1; if the task is not create, the percentage will be returned based on the value of counter. Number, after completing an operation, the counter value is increased by 1.

2, client code
The client code of this example mainly displays the status of the progress bar based on the returned percentage number. Open Notepad and enter the following code:

<html> 
 <head> 
 <title>JSP+Ajax 进度条</title> 
 <script type="text/javascript"> 
  var xmlHttp; 
  var bar_color = &#39;blue&#39;; 
  var span_id = "yellow"; 
  var clear = " " 
 
  function createXMLHttpRequest() { 
   if (window.ActiveXObject) { 
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
   } 
   else if (window.XMLHttpRequest) { 
    xmlHttp = new XMLHttpRequest();     
   } 
  } 
 
  function go() { 
   createXMLHttpRequest(); 
   checkp(); 
   var url = "ProgressBarJsp.jsp?task=create"; 
   xmlHttp.open("GET", url, true); 
   xmlHttp.onreadystatechange = goCallback; 
   xmlHttp.send(null); 
  } 
 
  function goCallback() { 
   if (xmlHttp.readyState == 4) { 
    if (xmlHttp.status == 200) { 
     setTimeout("pollServer()", 2000); 
    } 
   } 
  } 
   
  function pollServer() { 
   createXMLHttpRequest(); 
   var url = "ProgressBarJsp.jsp?task=poll"; 
   xmlHttp.open("GET", url, true); 
   xmlHttp.onreadystatechange = pollCallback; 
   xmlHttp.send(null); 
  } 
   
  function pollCallback() { 
   if (xmlHttp.readyState == 4) { 
    if (xmlHttp.status == 200) { 
     var percent_complete = xmlHttp.responseXML.getElementsByTagName("percent")[0].firstChild.data; 
      
     var index = processResult(percent_complete); 
     for (var i = 1; i <= index; i++) { 
      var elem = document.getElementById("block" + i); 
      elem.innerHTML = clear; 
 
      elem.style.backgroundColor = bar_color; 
      var next_cell = i + 1; 
      if (next_cell > index && next_cell <= 9) { 
       document.getElementById("block" + next_cell).innerHTML = percent_complete + "%"; 
      } 
     } 
     if (index < 9) { 
      setTimeout("pollServer()", 2000); 
     } else { 
      document.getElementById("complete").innerHTML = "网站已完成加载!"; 
     } 
    } 
   } 
  } 
   
  function processResult(percent_complete) { 
   var ind; 
   if (percent_complete.length == 1) { 
    ind = 1; 
   } else if (percent_complete.length == 2) { 
    ind = percent_complete.substring(0, 1); 
   } else { 
    ind = 9; 
   } 
   return ind; 
  } 
 
  function checkp() { 
   var progress_bar = document.getElementById("progressBar"); 
   if (progress_bar.style.visibility == "visible") { 
    clearBar(); 
    document.getElementById("complete").innerHTML = ""; 
   } else { 
    progress_bar.style.visibility = "visible" 
   } 
  } 
   
  function clearBar() { 
   for (var i = 1; i < 10; i++) { 
    var elem = document.getElementById("block" + i); 
    elem.innerHTML = clear; 
    elem.style.backgroundColor = "white"; 
   } 
  } 
 </script> 
 </head> 
 <body onload="go();"> 
 <h1 align=center>网站正在加载中,请稍候</h1> 
 
 <p> 
 <table align="center"> 
  <tbody> 
   <tr><td> 
    <p id="progressBar" style="padding:2px;border:solid yellow 2px;visibility:hidden"> 
     <span id="block1"> </span> 
     <span id="block2"> </span> 
     <span id="block3"> </span> 
     <span id="block4"> </span> 
     <span id="block5"> </span> 
     <span id="block6"> </span> 
     <span id="block7"> </span> 
     <span id="block8"> </span> 
     <span id="block9"> </span> 
    </p> 
   </td></tr> 
   <tr><td align="center" id="complete"></td></tr> 
  </tbody> 
 </table> 
 </body> 
</html>
Copy after login

Save the above code as JspprogressBar.html. In this file, the JavaScript function createXMLHttpRequest() is mainly used to create an XMLHttpRequest object. The go() function completes sending an asynchronous request to the server. This function is called when the web page is loaded. Its main function is to notify the server and start on the client. Run progress bar. The GoCallback() function is mainly used to process the server's response, and the pollServer() function is called every 2 seconds. It is also used to send asynchronous requests to the server, mainly requesting the percentage of the server's response. The PollCallback() function is mainly used to process the server-side response, that is, to specify the display status of the progress bar based on the number returned by the server-side. It should be noted here that the goCallback() function is only executed once, while the PollCallback() function can be executed multiple times. The remaining three functions are auxiliary functions for implementing the progress bar.

3, run
to copy the above two Jsp files to the JSP directory. The running effect diagram is as follows:

201656165706542.jpg (518×153)

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

Using Ajax to implement a simple example of a progress bar with a percentage

Solve the problem that ajax does not support advancement through history /Back/refresh problem (graphic tutorial)

##About the secondary encapsulation jquery ajax method (with code)

The above is the detailed content of Sharing examples of using AJAX to implement progress bars on web pages. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template