java - 如何使用ajax 实现实时进度条
黄舟
黄舟 2017-04-17 17:05:15
[Java讨论组]
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(8)
迷茫
  • 用户AJAX提交操作,服务端生成一个任务ID,输出

  • 服务端计算当前任务一共分几步

  • ajax 轮询一个JSON接口获取当前执行到了第几步

  • 算百分比

  • 完毕

高洛峰

干嘛不做一个假的呢?反正服务器端处理完成之后你前端显示100%

阿神

好吧,我最近才完成的一个就是这种任务。主要看你的进度以何为划分了。

HTML我是用了bootstrap自带的进度条插件,我的工作是不停的用ajax上传文件,等待服务器端处理后返回,所以我这里显示浏览器端文件上传的进度(文件数、字节数,文件切片等自己看)。

如果你想一次ajax请求后等待服务器端执行,要求服务器端返回执行进度,可以约定好,服务器端先返回header中指定长度,每执行一定进度后,返回一个字节,这样浏览器端通过event就可以获知进度。具体还是参考我之前的问题吧

PHP中文网

看了看楼上几位说的基本都是XMLHttpRequest这个对象的那个onprogress事件里面获取进度。

这个进度只是表示上传进度!!!

其实,我之前还遇到过需要知道一个相对较长的后端任务的进度的问题。
如果任务特别长,http连接可能断掉,那么就需要创建任务ID,使用ajax轮训进度。

如果任务没有那么长,但是服务器又不能立即返回,那么可以简单的更改一下响应超时时间,然后服务端使用chunked,一点点的把进度返回回来。浏览器会收多少,解析多少的。

怪我咯

原生的XMLHttpRequest目前已经有许多浏览器支持Progress Events了,可以参考

如果还要支持想是IE之类的浏览器,最好看看兼不兼容

PHP中文网

如果你需要真实的,就ajax轮询服务器。 如果只是装个样子,就固定一个时间好了,等服务器加载完成然后100%就可以了

大家讲道理

貌似只有上传文件时, 才可以获取到进度, 直接post或者get文本数据, 是不行的...

怪我咯

HTML5有个onprogress方法,我们之前做测速时候就是用这个方法。比如下载文件时候,可以使用这个来计算当前的下载速度。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号