Cet article présente principalement le partage d'exemples d'utilisation d'AJAX pour implémenter des barres de progression sur les pages Web. Il est courant d'utiliser AJAX de manière asynchrone pour afficher la progression du traitement côté serveur. Les amis qui en ont besoin peuvent s'y référer. 🎜>
Lors du processus d'installation et de téléchargement des applications, l'utilisation de barres de progression est devenue très courante. La barre de progression peut être utilisée pour indiquer l'avancement du projet. Elle peut être exprimée en pourcentage ou en nombre et peut être placée horizontalement. Utilisez la technologie Ajax pour créer une barre de progression, ce qui rend la fonction plus puissante et plus rapide.Créez maintenant un exemple pour démontrer l'utilisation de la technologie Ajax pour implémenter une barre de progression. Cet exemple peut également être divisé en code client et code serveur.
1. Code du serveur
Le code du serveur implémente principalement les informations de demande d'un client et renvoie le pourcentage correspondant. Ouvrez le Bloc-notes et entrez le code suivant :
<%@ 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(); %>
Enregistrez le code ci-dessus sous ProgressBar.jsp. Dans ce fichier, un compteur de variable est déclaré et reçoit la valeur 1. Cette variable constitue la base du pourcentage renvoyé par la barre de progression. Utilisez l'objet de requête ci-dessous pour obtenir la valeur de la tâche variable envoyée par le client. Si la valeur est créée, cela signifie que la barre de progression doit être recréée et la valeur du compteur est définie sur 1 si la tâche est créée. pas créé, le pourcentage sera renvoyé en fonction de la valeur du compteur, après avoir terminé une opération, la valeur du compteur est augmentée de 1.
2, code client
Le code client de cet exemple affiche principalement l'état de la barre de progression en fonction du pourcentage renvoyé. Ouvrez le Bloc-notes et entrez le code suivant :
<html> <head> <title>JSP+Ajax 进度条</title> <script type="text/javascript"> var xmlHttp; var bar_color = 'blue'; 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>
3. Exécutez
pour copier les deux fichiers Jsp ci-dessus dans le répertoire JSP. Le diagramme des effets de fonctionnement est le suivant :
Utiliser Ajax pour implémenter un exemple simple de barre de progression avec un pourcentage
Résoudre le problème qu'Ajax ne prend pas en charge le transfert via l'historique / Problème Retour / Actualisation (tutoriel graphique)
À propos de la méthode ajax jquery d'encapsulation secondaire (avec code)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!