jQuery Ajax进度条效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery Ajax进度条效果相关的知识,希望对你有一定的参考价值。

如题:我在执行一个ajax请求的时候, 如果实现带进度条的那种效果,beforeSend这个属性没反应啊 ,求教!!!!

其实这种效果在实际应用中并不是太实用,如果你需要有一个进度的话,这必然前台与后台要实时交互才会出效果。比如你从数据库中遍历一组用户的信息,这中间需要一个不断递增的数字来实时调节页面的进度条。这就需要你不断的去请求服务器。当然也可以做个纯页面处理不通过服务器的,但执行时间你无法估计,造成不同步。

有一个简单的方法,首先得到这个需要读取数据的总条目数,然后在前台页面使用一个类似于递归的循环调用这个AJAX方法,再通过返回的数据来实时控制页面的进度条,通过返回成功的状态重复来调用此方法,最后用总条目数来控制这个递归什么时候停止。追问

如何得到总条目数啊?

追答

先用服务器语言得到,比如php,可操作数据库得到。再使用smarty传递到前台的html页面中的SCRIPT中的某一个变量。

参考技术A 其实这种效果在实际应用中并不是太实用,如果你需要有一个进度的话,这必然前台与后台要实时交互才会出效果。过返回成功的状态重复来调用此方法,最后用总条目数来控制这个递归什么时候停止。追问

我用ajax方法上传图片, 这样的话, 刷......的以下就执行完了。太郁闷了

用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条,全部加载完成之后进度条消失

二楼的方法不是常规的解决办法,个人感觉不是很好(不过他实现的加载进度是真实的,他的进度条是可以反映当前未加载页面的剩余内容的---其实这种方法也挺好....不过一般情况下没什么必要吧,如果要做成这样的,用flex更好)。
一楼的方法不是正确的。如果简单地放一个loading图片在页面上的话,会有两种情况:一、有可能实现加载的效果 。 二、在整个页面其它元素加载了大部分或全部后,这张图片才加载进来,那就实现不了加载的效果了。

常规的解决办法还是用ajax比较好。大概是这样的。
需要两个页面。1.一个是实际页面本身 2.另一个是一个空白页面放一张loading图片
先请求第2个页面,在这个页面中放一段ajax请求第1个页面,在success函数里将页面内容输出,并将loading图片隐藏掉。
代码是这样的:
loading page:
<body>
<img id='loadingImg' src='loading.gif' />
<body>
<script>
$.ajax(
type: 'GET',
url: 实际页面路径,
data: ,
success: function()
$('body').append(data);
$('#loadingImg').hide();//或直接remove()
,
dataType: 'html'
);
</script>

==========================================================
呵呵,一个加载的问题要考虑搜索的话原来就这么麻烦了。 <div id="forspider">.....给搜索蜘蛛看的纯HTML....</div>这里面的内容是整个实际页面的HTML吗?是的话,那这个loading页面本身加载就很笨重了,还不如直接跳到真实页面呢。 哎,可惜我不太懂搜索,悲剧。请指教----为什么要用绝对定位覆盖的方法来隐藏。直接把这一层display:none的话蜘蛛也会看不到吗?
参考技术A

常规的解决办法还是用ajax比较好。大概是这样的。

需要两个页面。

1.一个是实际页面本身     

2.另一个是一个空白页面放一张loading图片

先请求第2个页面,在这个页面中放一段ajax请求第1个页面,在success函数里将页面内容输出,并将loading图片隐藏掉。

代码是这样的:loading page:<body>    <img id='loadingImg' src='loading.gif' /><body<script  $.ajax( type: 'GET', url: 实际页面路径, data:   success: function() $('body').append(data)   $('#loadingImg').hide();//或直接remove()    ,  dataType: 'html'    );</script>

电脑黑屏解决方法:
1、检查显示器与电脑的连接线是否安装紧密;
2、取下电脑内存条,用橡皮擦拭金手指后放回(接触不良会造成电脑开机黑屏);
3、更换内存、显卡、显示器、连接线诊断故障所在。
4、系统文件损坏,重装系统。
这是一种解决方法~
1、制作启动盘。(W7系统4G U盘,XP系统2G U盘)下载大番薯u盘启动制作工具,安装软件,启动,按提示制作好启动盘
2、下载一个你要安装的系统,压缩型系统文件解压(ISO型系统文件直接转到U盘)到你制作好的U盘,启动盘就做好了
3、用U盘安装系统。插入U盘开机,按DEL或其它键进入BIOS,设置从USB启动-F10-Y-回车。按提示安装系统
4、安装完成后,拔出U盘,电脑自动重启,点击:从本地硬盘启动电脑,继续安装
5、安装完成后,重启。开机-进入BIOS-设置电脑从硬盘启动-F10-Y-回车。

参考技术B 刚好我做了一个, 可以任意定制
/* HTML */
<div id="progressbar"></div>

/* CSS */
#progressbar
background:#82b3f4 url(../images/bar.png) repeat-x left top;
height:25px;
width:1px;
border:1px solid #6d98ca;
-moz-border-radius:2px;
-webkit-border-radius:2px;
border-radius:2px;
color:white;
overflow:hidden;
text-indent:10px;
line-height:25px;
font-size:12px;


/* js / jquery*/
function progress(t0,t1)
if(t0<=t1)
var barwidth=Math.round(t0/t1*100)+"%";
$('#progressbar').css("width",barwidth).html(barwidth);
if(t0==t1)$('#progressbar').delay(1000).fadeOut();



//以下是测试函数, 执行 test(0) 就可以看到效果
function test(i)
i++;
if(i<=100)
progress(i,100);
var str="test("+i+")";
var t=setTimeout(str,500);


说明: 加载的过程中调用progress(), t0是当前进度, t1是总进度. 如果是页面加载的话用有onload事件的HTML标签如<img>, <iframe>, <body>等等来调用progress()

如果你用CSS3结合IE的CSS滤镜来做连图片都可以免了

=============================

感谢楼下说出了我忘记说的重点. 没错, 关键在于AJAX. 我是在做后台生成页面的部分连续用到几个ajax, 然后用这个方法表示网页生成进度的.
但前台网页还是用这个方法的话就会有问题. 相当严重的问题. 搜索蜘蛛是看不到你用ajax加载的内容的

当然, 也有不需要被搜索引擎收录的情况.....

如果是前台的话,我想这样写可以解决

<body>
<div id="forspider">.....给搜索蜘蛛看的纯HTML....</div>
<div id="loadingbox"><div id="progressbar"></div></div> //加载进度条, 用绝对定位把这一层盖满全屏, 让人看不到下面的东西
<div id="main"></div> //真正给人看的内容, 通过ajax加载到这个层里. 加载完成后remove掉 <div id="forspider">和<div id="loadingbox">
</body>

就看楼主能不能理解了.....
参考技术C 很简单,就两步。
1.把Loading进度条的GIF图片放到div内,并设置好位置及内容等等的CSS样式。(不要隐藏哦,页面在加载时就会显示)
2.在JQuery的$函数中放这代码就行了, $(".Loading").hide();//隐藏class="Loading"的对象,如下:
<div class="Loading"></div>
你可用GIF图片作为div的背景,也可把GIF图片直接放在<div class="Loading">图片</div>中。

以上是关于jQuery Ajax进度条效果的主要内容,如果未能解决你的问题,请参考以下文章

用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条,全部加载完成之后进度条消失

用jquery实现进度条效果

jquery ajax实现上传文件代码,带进度条

jquery ajax实现上传文件代码,带进度条

使用 jQuery $.ajax 和 Spring Boot 上传图片的进度条

带有进度条的 jQuery ajax 上传 - 没有 flash