• 没事点点广告,也是对博主的支持,谢谢!
  • 本站提供丰富的素材下载,有源码、模板、插件...
  • 内容如有侵犯,请立即联系管理员删除
雷小天博客

首页  > 说说  > ajax  

Ajax完整写法及实现加载进度条效果

  <script type="text/javascript">
  //批量发卡指令
    $('#addmanycard').click(function(){
      var msgid=layer.msg('正在批量发卡中...', {icon: 16,shade: [0.8, '#393D49'],time:false,});
      var id = $(this).attr('id');
      $.ajax({
      type:"POST",
       url:"{:url('admin/doorcontroller/addmanycard')}",
      data:"type="+id+"&doordata="+doordata,
      dataType:"json",
        xhr: function() { //ajax进度条
          var xhr = $.ajaxSettings.xhr();
          if (onprogress && xhr.upload) {
              xhr.upload.addEventListener("progress", progressBar, false);
              return xhr;
          }
      },
      beforeSend: function() {
         //请求前的处理
         layer.close(msgid);//手动关闭
         layer.msg('已下载10%');
     },
      success:function(data){
        layer.close(msgid);//手动关闭
        layer.msg(data.msg);
      },
      error: function (error) {
          alert(" error : " + error.responseText);
      }
    });
    })
    
    
$.ajax({
    url: "http://www.microsoft.com", //请求的url地址
    dataType: "json", //返回格式为json
    async: true, //请求是否异步,默认为异步,这也是ajax重要特性
    data: {
        "id": "value"
    }, //参数值
    type: "GET", //请求方式
    processData: false, //对表单data数据是否进行序列化
    contentType: false, //dataType设置你收到服务器数据的格式
    xhr: function() { //ajax进度条
        var xhr = $.ajaxSettings.xhr();
        if (onprogress && xhr.upload) {
            xhr.upload.addEventListener("progress", progressBar, false);
            return xhr;
        }
    },
    beforeSend: function() {
        //请求前的处理
    },
    success: function(req) {
        //请求成功时处理
    },
    complete: function() {
        //请求完成的处理
    },
    error: function() {
        //请求出错处理
    }
});



//进度方法


/**
 *    侦查附件上传情况,这个方法大概0.05-0.1秒执行一次
 */
function progressBar(evt) {
    var loaded = evt.loaded; //已经上传大小情况
    var tot = evt.total; //附件总大小
    var per = Math.floor(100 * loaded / tot); //已经上传的百分比
    $.fn.progressInit.draw(per + '%'); //绘制经度条
}
  </script>

先说说这个 beforeSend, 在请求发送前执行 比如 可以判断用户有没有登录 ,如果没有登录就停止请求 并提示。

$.ajax({
  url : 'my_action',
  dataType: 'script',
  beforeSend : function(xhr, opts){
    if(1 == 1) //just an example
    {
      xhr.abort(); // 停止请求
    }
  },
  complete: function(){
    console.log('DONE');
  }
});

$.ajax有一个参数是complete:function(){} 是在 请求完成之后执行的 ,配合beforeSend可以用来展示进度条

$.ajax({
     url : 'my_action',
     dataType: 'script',
     beforeSend : function(){
       // 设置 进度条到20%慢慢变到50%
     },
     complete: function(){
       // 设置 进度条到80%
     }
     success:function(){
       // 渲染页面
       // 进度到100%
     }
   });

这个只是表面上的看到的进度条 ,展示大概的进度,并不是真正的加载进度。


选择风格关闭

取消 雷小天博客