流程: 前臺發起
ajax
請求,並顯示進度條。完成後顯示100%,並且clearInterval()
前端程式碼
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Progressbar - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
.ui-progressbar {
position: relative;
}
.progress-label {
position: absolute;
left: 50%;
top: 4px;
font-weight: bold;
text-shadow: 1px 1px 0 #fff;
</style>
</head>
<body>
<button type="button" onclick="start();">開始</button>
<div id="progressbar">
<div class="progress-label">Loading...</div>
</div>
<script>
var progressbar = $( "#progressbar" ),
progressLabel = $( ".progress-label" );
$(function(){
if(typeof(inteval) != 'undefined') {
doClearInterval;
} else {
inteval = null;
}
})
// 開始
function start(){
//使用JQuery從後臺獲取JSON格式的資料
$.ajax({
type:"post",//請求方式
url:"index.php",//傳送請求地址
// timeout:30000,//超時時間:30秒
dataType:"json",//設定返回資料的格式
//請求成功後的回撥函式 data為json格式
beforeSend: function() {
// 開始進度條
begeinProgress(10);
},
success:function(data){
console.log(data);
if(data.code == 0){
doClearInterval();
setProgress(progressbar, 100);
}
},
//請求出錯的處理
error:function(){
doClearInterval();
alert("請求出錯");
}
});
}
// 進度條長度
var width = 0;
function begeinProgress(t) {
width = 1;
interval = setInterval("doProgress()", t * 10);
}
// 設定進度
function setProgress(node, width) {
if (node) {
progressbar.progressbar({
value: width,
});
progressLabel.text(width + '%');
}
}
// 迴圈進度
function doProgress() {
if(width == 98) {
doClearInterval();
}
setProgress(progressbar, width);
width++;
}
// 清除進度
function doClearInterval() {
clearInterval(interval);
}
</script>
</body>
</html>
後臺程式碼
<?php
$back['code'] = 0;
$back['data'] = [];
$back['msg'] = 'ok';
sleep(10);
echo json_encode($back);
?>