首页 > 编程 > .NET > 正文

asp.net线程批量导入数据时通过ajax获取执行状态

2024-07-10 12:49:25
字体:
来源:转载
供稿:网友

前言

最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能。

通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过ajax调用session里的执行状态,从而实现反馈导入状态的功能!

上代码: 前端页面

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>批量导入数据</title> <style type="text/css">  .pop_body_con { width: 310px; position: fixed; top: 50%; left: 50%; margin-left: -150px; background: #eee; display:none; }   .pop_body_con .pop_head { width: auto; padding: 10px 0; background: #fff; }    .pop_body_con .pop_head a { display: block; color: #717274; font-size: 12px; text-decoration: none; text-align: center; }  .pop_box { width: auto; overflow: hidden; padding: 45px 10px; }   .pop_box .pop_text { float: left; }    .pop_box .pop_text p { padding: 0; margin: 0; font-size: 12px; line-height: 18px; color: #717274;}   .pop_box .progress_bar_con { float: left; width: 220px; position: relative; z-index: 2; }    .pop_box .progress_bar_con p { margin: 0; padding: 0; font-size: 12px; color: #fff; line-height: 18px; width: 100%;             text-align: center; position: absolute; left: 0; top: 0; z-index: 4; }    .pop_box .progress_bar_con .progress_bar_start { width: 100%; height: 18px; background: #C4C0C0; }    .pop_box .progress_bar_con .progress_bar_end { width: 16%; height: 18px; background: #2bd35d; position: absolute; left: 0; top: 0; z-index: 3; }   .pop_box .progress_bar_con { float: left; }  #loading-mask { width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 0; background-color: rgba(0, 0, 0, 0.34902); display: none; } </style> <script src="ajax-master/jquery.js"></script> <script>  var MyInterval;  $(function () {   $("#startImport").click(function () {    MyInterval = setInterval(getState, 1000);   });  });    function getState() {   $.ajax({    url: "test.aspx",    type: "Post",    data: { action: "getSession" },    success: function (msg) {     if (msg != "null") {      msg = eval('(' + msg + ')');      if (msg.being == 100) {       setProcessBar(1, 1);       $(".pop_body_con").hide();       $("#loading-mask").hide();       clearInterval(MyInterval);      }      else {       $(".pop_body_con").show();       $("#loading-mask").show();       setProcessBar(msg.being, msg.count)      }     }    }   });  }  function setProcessBar(exeFlag, exeMax) {   $("#progressbar_text").html(parseInt(roundFun(exeFlag / exeMax, 2) * 100) + "%");   $("#progressbar_bar").attr("style", "width:" + parseInt(roundFun(exeFlag / exeMax, 2) * 100) + "%;");  }  function roundFun(number, X) {   X = (!X ? 2 : X);   return Math.round(number * Math.pow(10, X)) / Math.pow(10, X);  } </script></head><body style="background-color: #fff;"> <input id="startImport" type="button" value="导入数据" /> <div id="loading-mask" ></div> <div class="pop_body_con">  <div class="pop_head">   <a href="javascript:;">正在导入…请勿操作!</a>  </div>  <div class="pop_box">   <div class="pop_text">    <p>导入进度:</p>   </div>   <div class="progress_bar_con">    <p id="progressbar_text">0%</p>    <div class="progress_bar_start"></div>    <div class="progress_bar_end" id="progressbar_bar"></div>   </div>  </div> </div></body></html>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表