【问题标题】:jQuery's "uploadProgress" not firing in "$.ajax"jQuery 的“uploadProgress”没有在“$.ajax”中触发
【发布时间】:2017-07-02 04:01:34
【问题描述】:

我是 jQuery 新手,现在我正在处理文件上传。我想在每次上传图片时添加一些进度条。我在 jQuery 中使用了uploadProgress,但它似乎不起作用。这是我的代码:

$('#_form_').on('submit', function(e){

   var file_and_desc = new FormData($(this)[0]),
       form_url = "_pages/_form_";

       var ext = choose.val(),
           allowed = ['jpg','png'];

       if(ext){
          var get_ext = ext.split('.');
              get_ext.reverse();

              if($.inArray(get_ext[0].toLowerCase(), allowed) > -1){
                   //upload image
                   $.ajax({
                         url : form_url,
                         type: 'POST',
                         data: file_and_desc,
                         contentType: false,
                         processData: false,
                         uploadProgress: function(event, positio, total, percentComplete){
                          $('h1').html(percentComplete);
                         },
                         success: function(data){
                              // some code here...
                         }
                   });
              }
       }
});

就是这样!我该怎么办?

【问题讨论】:

标签: javascript jquery file-upload progress-bar


【解决方案1】:

根据$.ajax() 参考,uploadProgress 不是有效选项。

取而代之的是xhr 选项,它允许您在ajax 请求使用的XMLHttpRequest 上设置进度侦听器。

this answer 展示了如何做到这一点:

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();
        xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var percentComplete = (evt.loaded / evt.total) * 100;
                //Do something with upload progress here
            }
       }, false);
       return xhr;
    },
    type: 'POST',
    url: "/",
    data: {},
    success: function(data){
        //Do something on success
    }
});

【讨论】:

  • 非常感谢!拯救了我的一天。
  • 如果您安装了 jQuery 表单插件,我认为这是一个有效的参考。 jquery.malsup.com/form
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2016-11-04
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
相关资源
最近更新 更多