有没有办法让jQuery ajax上传进度?

Jin*_*Lin 8 ajax jquery

$.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
  }
});
Run Code Online (Sandbox Code Playgroud)

这不适用于jQuery 1.5+,因为xhr被jqXHR(即原始XHR的高级版本)所取代.现在问题是如何让它与jqXHR一起工作......任何人都知道如何做到这一点?

Luk*_*nga 11

试试这个

$.ajax({
    url: path,
    xhr: function () {
        var xhr = $.ajaxSettings.xhr();
        xhr.upload.onprogress = function (e) {
            if (e.lengthComputable) {
                console.log(e.loaded / e.total);
            }
        };
        return xhr;
    }
}).done(function (e) {

})
Run Code Online (Sandbox Code Playgroud)


Sco*_*son 1

搜索文档和其他问题,似乎有一个插件可以监控 jquery ajax 进度: https: //github.com/hiddentao/jquery.ajaxprogress