ajax异步请求 进度条,jQuery progressbar通过Ajax请求实现后台进度实时功能

本文展示了如何利用jQuery的progressbar插件和Ajax技术实现后台进度的实时显示。通过定时调用Ajax请求获取后台存储在cookie中的进度值,并更新到进度条上。当进度达到100%时,停止进度条更新。详细代码包括前台JSP、Struts2配置和后台Java处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要演示Jquery progressbar的进度条功能。js通过ajax请求向后台实时获取当前的进度值。后台将进度值存储在cookie中,每次请求后,将进度条的值增2个。以此演示进度条的实时显示功能。

前台index.jsp

jsp代码如下

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'index.jsp' starting page

var timerId;

$(function(){

//每隔0.5秒自动调用方法,实现进度条的实时更新

timerId=window.setInterval(getForm,500);

});

function getForm(){

//使用JQuery从后台获取JSON格式的数据

$.ajax({

type:"post",//请求方式

url:"getProgressValueByJson",//发送请求地址

timeout:30000,//超时时间:30秒

dataType:"json",//设置返回数据的格式

//请求成功后的回调函数 data为json格式

success:function(data){

if(data.progressValue>=100){

window.clearInterval(timerId);

}

$('#p').progressbar('setValue',data.progressValue);

},

//请求出错的处理

error:function(){

window.clearInterval(timerId);

alert("请求出错");

}

});

}

struts.xml文件的配置

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

后台的java代码()

package edu.njupt.zhb.test;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/*

*@author: ZhengHaibo

*web: http://blog.youkuaiyun.com/nuptboyzhb

*mail: zhb931706659@126.com

*Sep 13, 2013 Nanjing,njupt,China

*/

public class TestAction extends ActionSupport {

/**

*

*/

private static final long serialVersionUID = -8697049781798812644L;

/**

* 通过Ajax获取json格式的ProgressBar值

* Type:Action

*/

public void getProgressValueByJson(){

String progressValueString = getCookie(getRequest(),"progressValue");

int progressValue = Integer.parseInt(progressValueString);

if(progressValue>100){

progressValue = 0;

}

System.out.println(" getCookie:---progressValue="+progressValue);

writeJsonString("{"progressValue":"" + progressValue + ""}");

progressValue += 2;

setCookie(getResponse(),"progressValue",progressValue+"",365*24*60*60);

}

/**

* Get HttpServletRequest Object

* @return HttpServletRequest

*/

public HttpServletRequest getRequest(){

return ServletActionContext.getRequest();

}

/**

* Get HttpServletResponse Object

* @return HttpServletResponse

*/

protected HttpServletResponse getResponse() {

return ServletActionContext.getResponse();

}

/**

* Get PrintWriter Object

* @return PrintWriter

* @throws IOException

*/

protected PrintWriter getWriter() throws IOException {

return this.getResponse().getWriter();

}

/**

* 写Json格式字符串

* @param json

*/

protected void writeJsonString(String json) {

try {

getResponse().setContentType("text/html;charset=UTF-8");

this.getWriter().write(json);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 获取cookie

* @param request

* @param name

* @return String

*/

public static String getCookie(HttpServletRequest request, String name) {

String value = null;

try {

for (Cookie c : request.getCookies()) {

if (c.getName().equals(name)) {

value = c.getValue();

}

}

} catch (Exception e) {

e.printStackTrace();

}

return value;

}

/**

* 设置cookie

* @param response

* @param name

* @param value

* @param period

*/

public static void setCookie(HttpServletResponse response, String name, String value, int period) {

try {

Cookie div = new Cookie(name, value);

div.setMaxAge(period);

response.addCookie(div);

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行

将项目部署到Tomcat上之后,在浏览器中输入URL,则可以看到进度条逐渐更新

f8aa61bd543d27284d800ea19ea5e900.png

源码下载:http://xiazai.jb51.net/201610/yuanma/jqueryProgressbar(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值