2013-10-02 38 views
12

Basicaly,我执行的外部登录系统的AJAX请求,我怎么可以更新基于该请求的长度进度条?更新进度条使用Ajax请求秒

例如,请求花费1.30s 之间到1.40s完成,我怎么可以更新进度条根据一定的时间间隔,如更新每10ms或东西10%,这里的HTML布局进度条

<div class="progress progress-striped active"> 
    <div class="progress-bar" role="progressbar" aria-valuenow="65" aria-valuemin="0" aria-valuemax="100" style="width: 65%"> 
     <span class="sr-only">65% Complete</span> 
    </div> 
</div> 

使用width: 65%属性

的想法是基本上得到它看起来像它的基础上,要求更新请求完成,所以当确定进度条的长度百分比栏已满

+5

我的建议是不要。在1.3到1.4秒(在大多数情况下),用户几乎不会想到'我不知道我已经离开了多久,直到我完成登录'。使用[loader gif](https://www.google.co.uk/search?q=loader+gif)。 – George

+1

您如何知道请求会在慢速连接上花费1.3-1.4秒而不是6秒? –

+0

@KevinB那是针对OP吗? – George

回答

26

我觉得这个职位是很清楚 http://www.dave-bond.com/blog/2010/01/JQuery-ajax-progress-HMTL5/

发布此以供将来参考(应该的博客被删除):

$.ajax({ 
    xhr: function(){ 
     var xhr = new window.XMLHttpRequest(); 
     //Upload progress 
     xhr.upload.addEventListener("progress", function(evt){ 
     if (evt.lengthComputable) { 
     var percentComplete = evt.loaded/evt.total; 
     //Do something with upload progress 
     console.log(percentComplete); 
     } 
     }, false); 
    //Download progress 
     xhr.addEventListener("progress", function(evt){ 
     if (evt.lengthComputable) { 
      var percentComplete = evt.loaded/evt.total; 
     //Do something with download progress 
      console.log(percentComplete); 
     } 
     }, false); 
     return xhr; 
    }, 
    type: 'POST', 
    url: "/", 
    data: {}, 
    success: function(data){ 
    //Do something success-ish 
    } 
}); 
+0

这正是我要找的,非常感谢! – Curtis

+2

很高兴我能帮助:) 另外:如果这的确是回答您的问题,标志着它的方式:)所以这是坦途你的问题就解决了:) – Yoeri

+0

感谢@Yoeri! @Curtis,你应该标记答案是正确的,我可能会发现它更快速的方式... – terraling