jquery 的ajax 上传进度条

一直在用ajax,但是没有做进度条,原来$.ajax里面封装了xhr,只要从这里面取得上传进度。

这是将回调写到变数里

将xhr对像放到 $.ajax({....,xhr});

$.ajax({
    url:'xxxx',
    ....,
    //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
    xhr: function(){ 
        myXhr = $.ajaxSettings.xhr();
          //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
        if(myXhr.upload){
            //绑定progress事件的回调函数
            myXhr.upload.addEventListener('progress',progressHandlingFunction, false);
        }
    //xhr对象返回给jQuery使用
        return myXhr; 
      },
    success:function(){}
});
    

绑定到'progress' 这里要自己再定义progressHandlingFunction

//上传进度回调函数:
function progressHandlingFunction(e) {
    if (e.lengthComputable) {
        //e.loaded 上传大小
        //e.total 文件大小
        var percent = e.loaded/e.total;
    }
} 

这是将回调写到ajax过程中

先定一个方法

var jqureAjaxXhrOnProgress = function(fun) {
    jqureAjaxXhrOnProgress.onprogress = fun; //绑定监听
    //使用闭包实现监听绑
    return function() {
        //通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
        var xhr = $.ajaxSettings.xhr();
        //判断监听函数是否为函数
        if (typeof jqureAjaxXhrOnProgress.onprogress !== 'function')
            return xhr;
        //如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
        if (jqureAjaxXhrOnProgress.onprogress && xhr.upload) {
            xhr.upload.onprogress = jqureAjaxXhrOnProgress.onprogress;
        }
        return xhr;
    }
}

再到$.ajax({...,})

$.ajax({
    url:'xxxx',
    ....,
    xhr:jqureAjaxXhrOnProgress(function(e){
        var percent=e.loaded / e.total;
        $('#ajaxfilestext').html(percent);
    }),
    success:function(){}
});

再根据自己的需求写进度条。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文详细介绍了 XMLHttpRequest 相关知识,涉及内容: AJAX、XMLHTTP、XMLHttpReq...
    semlinker阅读 14,685评论 2 18
  •   2005 年,Jesse James Garrett 发表了一篇在线文章,题为“Ajax: A new App...
    霜天晓阅读 4,377评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 8,664评论 0 7
  • 又到 国庆节的时候了,这一天人们都喜欢凌晨5,6点去天安门看升国旗,然后在一起唱奏着国歌,那是多么的幸福啊!而...
    2cfc62cc0bb8阅读 1,449评论 0 2