求在查询数据库的时候,在页面上显示进度条?
在查询数据库的时候,在页面上显示进度条,等数据查询完毕时,进度条就消失,不知各位能否提供一个参考,多谢了 问题点数:20、回复次数:15Top
1 楼yys79(shart-shoot)回复于 2006-03-04 10:47:41 得分 0
感觉没戏。查询数据库是服务器端的,这时候肯定还没给web页面回应,应该没法显示。或者把大查询分成n个小查询。完成一个查询回送给web页面,也就是刷新n次。Top
2 楼sxy0713(沈骏)回复于 2006-03-04 10:54:31 得分 0
感觉是JSF的内容~Top
3 楼wzg7711(小蛇)回复于 2006-03-04 11:07:36 得分 0
或者在页面显示,“正在查询,请稍等......”像这样动画也可以,等查询完毕就自动关闭Top
4 楼isloop(www.isloop.com)回复于 2006-03-04 12:19:58 得分 0
不太难实现,我做过在生成静态页发布网站的时候做过。不过说起来很麻烦,现在要马上出去,就不多说了,下面的朋友接着吧Top
5 楼wzg7711(小蛇)回复于 2006-03-04 12:51:13 得分 0
刚在网上找了一静态网页的进度条,不知哪们高手可以修改一下可以在JSP网页里使用,主要是无法知道查询数据库时需要多长时间
<script type=text/javascript>
var ie5 = (document.all && document.getElementsByTagName);
var step = 0;
function setSB(v, el, inforEl, message) {
if (ie5 || document.readyState == "complete") {
filterEl = el.children[0];
valueEl = el.children[1];
if (filterEl.style.pixelWidth > 0) {
var filterBackup = filterEl.style.filter;
filterEl.style.filter = "";
filterEl.style.filter = filterBackup;
}
filterEl.style.width = v + "%";
valueEl.innerText = v + "%";
inforEl.innerText = message;
}
}
function setSBByStep(v, el, inforEl, message) {
if (ie5 || document.readyState == "complete") {
step = step + v;
filterEl = el.children[0];
valueEl = el.children[1];
if (filterEl.style.pixelWidth > 0) {
var filterBackup = filterEl.style.filter;
filterEl.style.filter = "";
filterEl.style.filter = filterBackup;
}
filterEl.style.width = step + "%";
valueEl.innerText = step + "%"
inforEl.innerText = message;
}
}
function fakeProgress(v, el) {
if (v >= 101)
alert('aaa');
else {
setSB(v, el, infor, "数据正在查询 加载中……");
window.setTimeout("fakeProgress(" + (v + 1) + ", document.all['" + el.id + "'])", 20);
}
}
//-->
</script>
<body onLoad="fakeProgress(0,sb)">
<DIV align=center>
<DIV id=sb style="BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; BACKGROUND: #DCDCDC; WIDTH: 400px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 14px; TEXT-ALIGN: left">
<DIV id=sbChild1 style="FILTER: Alpha(Opacity=0, FinishOpacity=80, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0); OVERFLOW: hidden; WIDTH: 100%; POSITION: absolute; HEIGHT: 12px">
<DIV style="BACKGROUND: #000000; WIDTH: 100%" hidden overflow: height:12px;></DIV></DIV>
<DIV style="FONT-SIZE: 10px; WIDTH: 400px; COLOR: white; FONT-FAMILY: arial; POSITION: absolute; HEIGHT: 14px; TEXT-ALIGN: center"></DIV></DIV>
<P></P>
<DIV id=infor style="FONT-SIZE: 11px; WIDTH: 100%; COLOR: #999999; FONT-FAMILY: arial; POSITION: relative; HEIGHT: 14px; TEXT-ALIGN: center"></DIV></DIV>Top
6 楼zx2002027(http://www.netyi.net/in.asp?id=zx2002027)回复于 2006-03-06 22:20:37 得分 0
关注Top
7 楼strawren(大漠)回复于 2006-03-09 10:08:41 得分 0
这个基本上不现实。
因为服务器端的执行是未知的,而且http是一次请求与响应。
用这个方法试试:
给用户一个正在执行的画面,执行完后再跳转到相应的页面Top
8 楼fjm_520(蓝)回复于 2006-03-09 10:51:53 得分 0
学习Top
9 楼hant(阿水)回复于 2006-03-09 11:12:50 得分 0
我们现在实现的都是出现一个图层,上面有个GIF图片,提示用户正在进行数据库操作,请等待,不好提示还剩多少时间,难!Top
10 楼VisaulAll(欧阳)回复于 2006-03-09 12:58:11 得分 0
可以试试用xmlHttpTop
11 楼haoren_1012(好人 )回复于 2006-03-10 09:08:06 得分 0
提示剩余时间很难,如果只要出现提示“正在查询”,结束时自动关闭,倒可以实现!Top
12 楼dlxu(脱离纯粹Coding阶段)回复于 2006-03-10 09:24:33 得分 0
最多采用Ajax,不过数据库查询的话好像数据库不会返回查询的百分比吧Top
13 楼loveme820(例外)回复于 2006-03-10 10:26:29 得分 0
如果你能建立起这样的前提,还是有希望的:
1.你知道查数据库需要多长时间(这个实现起来,难度会超出想象)
2.现在用了多少时间。
3.其他影响时间的因素,如网络状况,服务器配置等。Top
14 楼minisun2000(红色枫叶)回复于 2006-03-10 14:41:31 得分 0
应该比较难,如楼上所说的,前2条基本都没戏Top
15 楼soft1999(豆子1999)回复于 2006-03-10 15:04:08 得分 0
其实了解缓存技术后你就知道怎么实现了..我原来用asp做过.不难.不知道jsp是不是一样.Top




