Ajax进度条的原理

2018-08-03  本文已影响0人  meng_281e
      // 定义创建XMLHttpRequest对象的函数
      function getXhr(){ 
         var xhr;  
         if(window.XMLHttpRequest){ // 正常浏览器
            xhr = new XMLHttpRequest(); 
         }else{  
           xhr = new ActiveXObject("Microsoft.XMLHttp");// IE浏览器(8及之前)
         }       
         return xhr;// 返回XMLHttpRequest对象
      }
      var xhr=getXhr();
      //console.log(xhr.progress,xhr.upload) 
      // 判断浏览器是否有xhr.upload属性
      if (xhr.upload) {  
           //开始
           xhr.upload.onloadstart =function(e){
             console.log(e,'start开始')
          }
          //发送
          xhr.upload.onprogress = function (e) {
            var done = e.position || e.loaded, total = e.totalSize || e.total;
            console.log( `onprogress: ${done}/${total}= Math.floor(done / total * 100) % `);
          };

           //结束 事件 loadend:在通信完成或者触发error、abort或load事件后触发。
           //成功返回调用方法
           xhr.upload.onload =function(e){
              console.log('onloadend')
           }

           //错误返回调用方法
           xhr.upload.onerror =function(e){
              console.log('onerror')
           }
           xhr.upload.onloadend =function(e){
             console.log('onloadendend')
            }
            //发送完成 请求状态监控
            xhr.onreadystatechange = function (e) {
            if (4 == this.readyState) {
             console.log('xhr upload complete',e,'onreadystatechange状态为4的时候');
           }
      }

     xhr.open("POST", "01.php");
       xhr.send(data);
     }
上一篇 下一篇

猜你喜欢

热点阅读