Javascript 如何在jQuery.get()中拥有进度条
是否可以用一个进度条来衡量jQuery.get()的进度?如果您能够将服务器正在处理的任务划分为多个处理块,那么您可以让服务器响应调用另一个Javascript 如何在jQuery.get()中拥有进度条,javascript,jquery,progress-bar,Javascript,Jquery,Progress Bar,是否可以用一个进度条来衡量jQuery.get()的进度?如果您能够将服务器正在处理的任务划分为多个处理块,那么您可以让服务器响应调用另一个$.get()并以这种方式更新进度条 function get_chunk(chunk_number, max_chunks){ $.get('eg.php?chunk=' + chunk_number, function(){ chunk_number++; if(chunk_number < max_chun
$.get()
并以这种方式更新进度条
function get_chunk(chunk_number, max_chunks){
$.get('eg.php?chunk=' + chunk_number, function(){
chunk_number++;
if(chunk_number < max_chunks){
get_chunk(chunk_number, max_chunks)
}
update_status_bar(chunk_number, max_chunks);
}
}
函数获取块(块数,最大块数){
$.get('eg.php?chunk='+chunk\u编号,函数(){
chunk_number++;
if(块数<最大块数){
获取块(块数,最大块数)
}
更新块状态栏(块编号、最大块);
}
}
否则,您将不得不研究一种web应用程序模型,例如使用服务器端推送,客户机不必发出请求就可以将数据发送到客户机。在当前版本的jQuery中,这并不是现成的,但仍然可以不费吹灰之力 您应该收听jQuery允许您访问的
XMLHttpRequest
事件的progress
。例如:
这里是链接到
您可能还想看一看,以避免自己做这件事
注:
- 一些较旧的浏览器可能不支持
事件进度
- 要计算下载进度,您必须知道要下载的资源的大小,即服务器必须发送
HTTP头。如果大小未知,则无法计算进度。这就是内容长度
事件的进度
属性的作用长度可计算
$.ajax(
{
type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
// Change to 'GET' if you need.
url: "/", data: {},
beforeSend: function(XMLHttpRequest)
{
//Upload progress
XMLHttpRequest.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
//Do something with upload progress
}
}, false);
//Download progress
XMLHttpRequest.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
//Do something with download progress
}
}, false);
},
success: function(data){
// successful completion handler
}
});