首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取JQuery ajax请求进度的最简洁方法是什么?

获取JQuery ajax请求进度的最简洁方法是什么?
EN

Stack Overflow用户
提问于 2013-10-02 06:21:22
回答 4查看 124.8K关注 0票数 114

在纯javascript中非常简单:只需将回调附加到{XMLHTTPRequest}.onprogress

代码语言:javascript
复制
var xhr = new XMLHttpRequest();

xhr.onprogress = function(e){
    if (e.lengthComputable)
        var percent = (e.loaded / e.total) * 100;
};

xhr.open('GET', 'http://www...', true);
xhr.onreadystatechange = function() {
    ...
};
xhr.send(null);

但是我正在做一个用JQuery ($.get()$.ajax())下载html数据的ajax站点,我想知道哪种方法是获得请求进度的最好方法,以便用一个小进度条显示它,但奇怪的是,我在JQuery文档中没有发现任何有用的东西……

EN

回答 4

Stack Overflow用户

发布于 2013-10-02 06:27:09

类似于$.ajax的代码(但仅限HTML5):

代码语言:javascript
复制
$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();
        xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                //Do something with upload progress here
            }
       }, false);

       xhr.addEventListener("progress", function(evt) {
           if (evt.lengthComputable) {
               var percentComplete = evt.loaded / evt.total;
               //Do something with download progress
           }
       }, false);

       return xhr;
    },
    type: 'POST',
    url: "/",
    data: {},
    success: function(data){
        //Do something on success
    }
});
票数 152
EN

Stack Overflow用户

发布于 2015-08-28 21:50:24

jQuery已经实现了promises,所以最好使用这项技术,不要将事件逻辑转移到options参数。我做了一个jQuery插件,添加了进度承诺,现在它和其他承诺一样容易使用:

代码语言:javascript
复制
$.ajax(url)
  .progress(function(){
    /* do some actions */
  })
  .progressUpload(function(){
    /* do something on uploading */
  });

github上查看它

票数 47
EN

Stack Overflow用户

发布于 2013-10-02 06:26:10

jQuery有一个AjaxSetup()函数,它允许您为所有ajax调用注册全局ajax处理程序,如beforeSendcomplete,并允许您访问xhr对象来执行您正在寻找的进程

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19126994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档