【发布时间】:2017-10-22 23:51:25
【问题描述】:
我有工作但丑陋的解决方案。
想法是:
- ajax 调用前运行进度条
- 完成(或失败)时跳转到进度条的末尾
- 如果 ajax 调用还没有完成,则等待 90%(完成而不是跳转到结尾)
我的解决方案至少存在三个问题:
- 我必须在 3 个位置重置进度条“宽度”。
- 我必须有公共变量 (widthProgressBar)
- 如果我想在同一页面上有两个进度条,我无法重用函数“startProgress”。
这是我的解决方案:http://jsfiddle.net/WQXXT/5403/
var widthProgressBarPing = 0;
// handles the click event, sends the query
function getSuccessOutput() {
widthProgressBar = 0;
startProgress("pingTestBar");
$.ajax({
url: '/echo/js/?js=hello%20world!',
complete: function(response) {
widthProgressBar = 99;
},
error: function() {
widthProgressBar = 99;
},
});
return false;
}
function startProgress(barId) {
var elem = document.getElementById(barId);
var id = setInterval(frame, 15);
function frame() {
if (widthProgressBar >= 90 && widthProgressBar < 99) {}
if (widthProgressBar >= 100) {
clearInterval(id);
} else {
widthProgressBar++;
elem.style.width = widthProgressBar + '%';
elem.innerHTML = widthProgressBar * 1 + '%';
}
}
}
.testProgress {
width: 100%;
background-color: #ddd;
}
.testProgressBar {
width: 0%;
height: 30px;
background-color: #4CAF50;
text-align: center;
line-height: 30px;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" onclick="return getSuccessOutput();"> test success </a> |
<div class="testProgress">
<div id="pingTestBar" class="testProgressBar"></div>
</div>
【问题讨论】:
标签: javascript jquery ajax