前端展示后台处理进度
来源:互联网 发布:阿里云ecs教程 编辑:程序博客网 时间:2024/06/05 10:51
将后台处理逻辑进度在用户前以进度条的方式表现出
test.php
<?php
$step = $_REQUEST['step'];
if($step == 1) {
$re_data['step'] = array(
array('text'=>'解压文件','url'=>'/upload/test.php?step=2','param'=>array('k'=>'v','k1'=>'v1')),
array('text'=>'Copy文件','url'=>'/upload/test.php?step=3','param'=>array('k'=>'v','k1'=>'v1')),
array('text'=>'Install','url'=>'/upload/test.php?step=4','param'=>array('k'=>'v','k1'=>'v1')),
);
$re_data['overwrite'] = array(
'test1 file','test2 file','test3 file'
);
echo json_encode($re_data);
}elseif($step == 2) {
sleep(1);
$re_data['error'] = false;
echo json_encode($re_data);
}elseif($step == 3) {
sleep(1);
$re_data['error'] = false;
echo json_encode($re_data);
}elseif($step == 4) {
$re_data = array('success'=>'修改成功');
echo json_encode($re_data);
}
?>
test.html
<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/upload/bootstrap/bootstrap.min.css">
<script src="/upload/js/jquery.min.js"></script>
<script src="/upload/bootstrap/bootstrap.min.js"></script>
<style type="text/css">
.form-group + .form-group { border-top: 1px solid #ededed; }
</style>
</head>
<body>
<div>
<div>
<input type="button" value="Upload" name="upload" id="button-upload">
</div>
<div>
<div class="form-group">
<label class="col-sm-2 control-label">进度</label>
<div class="col-sm-10">
<div class="progress">
<div id="progress-bar" class="progress-bar" style="width: 1%;"></div>
</div>
<div id="progress-text"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">将被覆盖的文件</label>
<div class="col-sm-10">
<textarea rows="10" readonly="" id="overwrite" class="form-control"></textarea>
<br>
<button type="button" id="button-continue" class="btn btn-primary" disabled=""><i class="fa fa-check"></i> Continue</button>
</div>
</div>
</div>
</div>
<script>
var step = new Array();
var total = 0;
$('#button-continue').on('click', function() {
next();
$('#button-continue').prop('disabled', true);
});
$('#button-upload').on('click', function() {
$('#form-upload').remove();
$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');
$('#form-upload input[name=\'file\']').trigger('click');
if (typeof timer != 'undefined') {
clearInterval(timer);
}
timer = setInterval(function() {
if ($('#form-upload input[name=\'file\']').val() != '') {
clearInterval(timer);
// Reset everything
$('#progress-bar').css('width', '0%');
$('#progress-bar').removeClass('progress-bar-danger progress-bar-success');
$('#progress-text').html('');
$.ajax({
url: '/upload/test.php?step=1',
type: 'post',
dataType: 'json',
data: new FormData($('#form-upload')[0]),
cache: false,
contentType: false,
processData: false,
beforeSend: function() {
$('#button-upload').button('loading');
},
complete: function() {
$('#button-upload').button('reset');
},
success: function(json) {
if (json['error']) {
$('#progress-bar').addClass('progress-bar-danger');
$('#progress-text').html('<div class="text-danger">' + json['error'] + '</div>');
}
if (json['step']) {
step = json['step'];
total = step.length;
if (json['overwrite'].length) {
html = '';
for (i = 0; i < json['overwrite'].length; i++) {
html += json['overwrite'][i] + "\n";
}
$('#overwrite').html(html);
$('#button-continue').prop('disabled', false);
} else {
next();
}
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
}, 500);
});
function next() {
data = step.shift();
if (data) {
$('#progress-bar').css('width', (100 - (step.length / total) * 100) + '%');
$('#progress-text').html('<span class="text-info">' + data['text'] + '</span>');
console.log(data.url);
$.ajax({
url: data.url,
type: 'post',
dataType: 'json',
data: data.param,
success: function(json) { console.log(json);
if (json['error']) {
$('#progress-bar').addClass('progress-bar-danger');
$('#progress-text').html('<div class="text-danger">' + json['error'] + '</div>');
$('#button-clear').prop('disabled', false);
}
if (json['success']) {
$('#progress-bar').addClass('progress-bar-success');
$('#progress-text').html('<span class="text-success">' + json['success'] + '</span>');
}
if (!json['error'] && !json['success']) {
next();
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
}
</script>
</body>
</html>
0 0
- 前端展示后台处理进度
- 【web前端】html+js实现流程进度展示条
- 前端实时更新后端处理进度
- dhtmlx分页功能前端和后台代码展示
- 根据读取后台配置(前端动态化展示table.)
- 让ajax更加友好,实时显示后台处理进度。
- shell进度展示案例
- scala学习进度展示
- 获取前端数据,后台的处理
- js 下载文件 前端 后台 处理
- 银行卡前台展示+后台字符串处理+银行卡卡号验证
- 简单实用后台任务执行框架(Struts2+Spring+AJAX前端web界面可以获取进度)
- UIProgressView实时展示上传下载进度
- 实现FTP下载进度展示
- 前端学习进度
- 前端能力学习进度
- “前端展示SL后台数据调取java”这种开发模式的跨域访问失败解决方案
- 一个前端写的php博客系统2--前台展示+后台登录
- NDK学习笔记:Android.mk
- 如果你毕业还喜欢我的话,那么我们就在一起吧--HZ
- Kinect2+Opencv绘制声源定位方向
- HTML中href和src的区别
- 关于局部变量,全局变量,作用域,生命期的概念,程序内存分析
- 前端展示后台处理进度
- NOIP2016 简要题解
- 接触前端,吐槽一下
- (12)向量组的线性相关性
- 为什么要用Mybatis框架---Mybatis学习笔记(一)
- FPGA学习资源
- CSS3边框 圆角效果 border-radius
- Hibernate的初始化
- 309. Best Time to Buy and Sell Stock with Cooldown