`

Ajax显示进度条

    博客分类:
  • AJAX
阅读更多

文件一览

  • progressBar.html
  • ProgressBarServlet.java

progressBar.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax Progress Bar</title>
<script type="text/javascript">
var xmlHttp;
var key;
var bar_color = 'gray';
var span_id = 'block';
var clear = "&nbsp;&nbsp;&nbsp;"

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function go() {
	createXMLHttpRequest();
	checkDiv();
	var url = "ProgressBarServlet?task=create";
	var button = document.getElementById("go");
	button.disabled = true;
	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 = "ProgressBarServlet?task=poll&key="+key;
	var button = document.getElementById("go");
	button.disabled = true;
	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="Complete!";
				document.getElementById("go").disabled=false;
			}
			
		}
	}
}

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 checkDiv() {
	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.background = "white";
	}
}
</script>
</head>
<body>
<h1>Ajax Progress Bar Example</h1>
Launch long-running process:
<input type="button" value="Launch" id="go" onclick="go();" />
<br/>
<table align="center">
	<tbody>
		<tr>
			<td>
				<div id="progressBar" style="padding:2px;border:solid black 2px;visibility:hidden">
					<span id="block1">&nbsp;&nbsp;&nbsp;</span>
					<span id="block2">&nbsp;&nbsp;&nbsp;</span>
					<span id="block3">&nbsp;&nbsp;&nbsp;</span>
					<span id="block4">&nbsp;&nbsp;&nbsp;</span>
					<span id="block5">&nbsp;&nbsp;&nbsp;</span>
					<span id="block6">&nbsp;&nbsp;&nbsp;</span>
					<span id="block7">&nbsp;&nbsp;&nbsp;</span>
					<span id="block8">&nbsp;&nbsp;&nbsp;</span>
					<span id="block9">&nbsp;&nbsp;&nbsp;</span>
				</div>
			</td>
		</tr>
		<tr><td align="center" id="complete"></td></tr>
	</tbody>
</table>
</body>
</html>

 ProgressBarServlet.java

package ajaxbook.chap4;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProgressBarServlet extends HttpServlet {

	private int counter = 1;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String task = req.getParameter("task");
		String res = "";
		if (task.equals("create")) {
			res = "<key>1</key>";
			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 = resp.getWriter();
		resp.setContentType("text/xml");
		resp.setHeader("Cache-Control", "no-cache");
		out.println("<response>");
		out.println(res);
		out.println("</response>");
		out.close();
	}

}

 运行效果如下图

  • 大小: 33.3 KB
分享到:
评论

相关推荐

    ajax进度条,实现很炫的效果

    Ajax进度条是Ajax请求过程中显示加载状态的一种可视化方式,它能够提供用户友好的反馈,让用户知道后台操作正在进行,从而减少用户的等待焦虑感。在本篇文章中,我们将深入探讨如何实现一个炫酷的Ajax进度条,并了解...

    ajax带进度条的上传功能

    同时,设置一个`&lt;progress&gt;`元素用于显示进度条: ```html &lt;progress id="uploadProgress" value="0" max="100"&gt;&lt;/progress&gt; ``` 2. **JavaScript部分**: 使用`FormData`对象封装文件数据,然后创建一个新...

    struts2+ajax文件进度条的实现

    在Struts2中实现文件上传功能,通常会涉及到处理大文件、用户体验优化等问题,如显示文件上传进度条。这个场景下,我们结合Ajax技术,可以创建一个实时反馈文件上传进度的动态界面,提升用户交互体验。 首先,我们...

    ajax进度条滚动时的等待效果

    3. **显示进度条**:创建一个进度条元素,并设置初始值为0。你可以使用CSS动画来模拟进度条的滚动效果。 4. **监听Ajax请求的进度**:许多现代浏览器的XMLHttpRequest对象提供了`onprogress`事件,你可以监听这个...

    ASP.net AJAX进度条实例(批量插入大量数据)

    该示例使用简单,完成插入指定数量的数据,ajax写入数据库,并显示精准进度,实时返回运行过程。对于大量插入数据库的操作,可以做到无刷,不超时; 目录结构: Css/style.css -------------进度条样式 Js/...

    Ajax批量上传显示进度条

    Ajax技术的引入,使得在不刷新整个页面的情况下实现异步数据交换成为可能,进而可以实现在文件上传过程中显示进度条的功能,极大地提升了用户体验。本文将详细探讨如何利用Ajax实现批量上传文件并展示进度条。 首先...

    ajax实现上传文件时显示进度条的功能

    实现上传文件时显示进度条的功能。当上传文件时,客户端同时显示文件上传的进度,从而及时了解文件传送情况。 源码结构说明 1.FileUpload文件夹下为源文件 2.FileUpload.war为部署文件 已经试过运行正常

    ajax上传进度条,form上传文件进度条

    在现代Web应用中,用户界面的交互性和用户体验是至关重要的,而“ajax上传进度条”和“form上传文件进度条”就是提升这方面体验的重要技术。本文将深入探讨这两种技术的原理、实现方式以及如何在实际项目中应用。 ...

    ajax 带进度条文件上传

    "Ajax 带进度条文件上传"技术就是为了解决这一问题而诞生的,它允许用户在后台上传文件的同时,通过进度条展示上传进度,提高了用户体验。在本案例中,我们将重点讨论如何使用Struts框架和Ajax技术来实现这一功能。 ...

    jquery ajax上传 带进度条

    "jquery ajax上传 带进度条"这个主题就是关于如何在jQuery AJAX上传文件时展示进度反馈。 首先,jQuery本身并不直接支持文件上传的进度显示,但可以通过一些插件来实现,如Uploadify。Uploadify是一款强大的jQuery...

    AJAX带进度条上传图片

    在现代Web应用中,用户经常需要上传文件,尤其是图片,而AJAX带进度条的图片上传功能能够提供更好的用户体验。这种技术允许用户在不刷新页面的情况下上传图片,并且可以看到上传进度,增强了交互性和反馈感。这里...

    asp.net2.0+ajax开发的文件上传并显示进度条

    在ASP.NET 2.0中,开发者经常需要处理文件上传的功能,而为了提供更好的用户体验,结合AJAX技术实现文件上传并显示进度条是常见的需求。本文将深入探讨如何使用ASP.NET 2.0和AJAX来实现这一功能。 首先,我们需要...

    jsp,ajax进度条

    这提供了更流畅、快速的用户交互体验,比如我们常见的无刷新搜索建议、实时聊天和进度条显示等功能。 现在让我们来讨论如何在JSP中集成AJAX实现进度条效果: 1. **HTML/JavaScript**:首先,在客户端,我们需要一...

    JSP+Ajax 进度条

    JSP用于服务器端处理,而Ajax则负责在不刷新整个页面的情况下与服务器进行异步通信,从而更新页面的特定部分,例如显示进度条。 **JSP基础** JSP是Java的一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java...

    ajax及时上传附带进度条 ajax定时

    本资源重点介绍了两种Ajax应用:实时上传并带有进度条显示的功能,以及利用Ajax定时访问数据的案例。 首先,让我们详细探讨“ajax及时上传”这一功能。在传统的文件上传过程中,用户提交表单后,整个页面会刷新,...

    Asp.net+Extjs+Ajax轮询进度条.rar

    "Asp.net+Extjs+Ajax轮询进度条.rar"这个压缩包文件显然包含了一个使用这些技术实现的特定功能——一个实时显示服务器处理进度的进度条界面。下面,我们将详细探讨这些技术以及它们在实现轮询进度条中的应用。 Asp...

    spring+velocity+ajax带进度条上传文件

    "spring+velocity+ajax带进度条上传文件"是一个综合性的技术应用场景,涉及到Spring框架、Velocity模板引擎以及Ajax技术,旨在提供一个用户友好的文件上传体验,其中包括实时的进度条显示。下面将详细解释这些技术...

    java使用ajax实现进度条

    本文将详细探讨如何使用Java结合Ajax技术来实现实时的进度条显示功能,以提升用户体验。 #### 一、理解核心概念 1. **Ajax(Asynchronous JavaScript and XML)**:Ajax是一种用于创建快速动态网页的技术。通过在...

    ajax进度条,ajax进度条

    ### AJAX 进度条实现详解 #### 一、引言 AJAX(Asynchronous JavaScript and XML)技术在现代Web开发中扮演着极其重要的角色。它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分页面内容。本文将...

    Ajax带进度条上传组件,打包jar

    标题提到的"Ajax带进度条上传组件,打包jar"是一个基于Ajax实现的JSP文件上传解决方案,它允许用户在后台上传文件的同时,通过进度条实时显示上传进度。这个组件可能包含了JavaScript、HTML、CSS以及Java后端处理...

Global site tag (gtag.js) - Google Analytics