$.ajax上传文件或图片的进度条

到网上搜了许多关于上传显示进度条的文章,用jquery的ajax上传文件的,一般用以下属性来获得进度条的百分比

processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false, // 告诉jQuery不要去设置Content-Type请求头
xhr:function(){                        
        myXhr = $.ajaxSettings.xhr();
        if(myXhr.upload){ // check if upload property exists
             myXhr.upload.addEventListener('progress',function(e){                            
                  var loaded = e.loaded;                  //已经上传大小情况 
                   var total = e.total;                      //附件总大小 
                   var percent = Math.floor(100*loaded/total)+"%";     //已经上传的百分比  
                         console.log("已经上传了:"+percent);                 
                         $("#processBar").css("width",percent);                                                                
               }, false); // for handling the progress of the upload
          }
          return myXhr;
},

processData: 要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

contentType参数,发起http请求时设置的请求头中的contentType。jQuery.ajax()默认的值为:'application/x-www-form-urlencoded; charset=UTF-8',这个在大多数情况下都是适用的。这里先将contentType设置为false,即不让jQuery设置contentType。

但是我在项目中用了$.ajax上传数据是成功的,但是为了获得上传的进度,加了contentType: false,  processData: false之后,前台返回的数据为空,后台获得的数据也是null,不太清楚怎么回事,有可能是对ajax2.0功能不太了解,应该是ajax2.0才可以获得数据传输的进度信息,之后解决了再更新吧。

参考文章  

异步上传文件,jquery+ajax,显示进度条

基于jQuery的ajax系列之用FormData实现页面无刷新上传 

关于ajax2的简介和入门

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值