layui 加载等待
时间: 2025-03-26 09:51:56 浏览: 26
### Layui 加载等待效果的实现
#### 使用 `layer.open()` 和 `layer.load()` 实现加载动画效果
为了创建一个带有确认按钮的弹窗,在用户点击确认后关闭该弹窗并展示加载动画,可以按照如下方式进行:
```javascript
// 打开一个新的对话框层
var index = layer.open({
content: '您确定要继续吗?',
btn: ['确定', '取消'],
yes: function(index, layero){
// 关闭当前打开的对话框
layer.close(index);
// 显示加载图标
var loadIndex = layer.load(0);
// 模拟异步操作,比如发起Ajax请求或其他耗时任务
setTimeout(function(){
// 完成后的处理逻辑
// 关闭加载提示
layer.close(loadIndex);
// 可选:显示成功消息或者其他后续动作
layer.msg('操作已完成');
}, 2000); // 延迟两秒模拟网络延迟
}
});
```
这段代码展示了如何通过调用`layer.open()`来创建一个包含两个按钮(“确定”和“取消”)的消息框。当用户选择了“确定”,则先关闭此消息框并通过`layer.load()`启动加载指示器[^1]。
对于文件上传过程中的等待动画,可以通过监听表单提交事件,并在实际发送数据之前开启加载状态;一旦接收到响应,则停止加载动画并将服务器反馈的信息更新至页面上[^3]。
#### 文件上传期间保持用户体验流畅性的做法
考虑到文件传输可能需要一定时间,可以在用户触发上传行为之后立即呈现加载界面给访客看,以此告知他们系统正在忙碌中。具体来说就是在AJAX请求发出前一刻激活加载图标的可见性,待到接收到来自服务端的成功回复后再将其隐藏起来。
```html
<form id="uploadForm">
<!-- 表单项 -->
</form>
<script>
document.getElementById('uploadForm').addEventListener('submit', function(event){
event.preventDefault(); // 防止默认提交
var formData = new FormData(this),
xhr = new XMLHttpRequest(),
uploadUrl = '/path/to/upload'; // 替换成真实的URL路径
// 开始加载动画
var loadingLayer = layer.load();
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200) {
try{
let responseJson = JSON.parse(xhr.responseText);
// 处理成功的回调函数
// 结束加载动画
layer.close(loadingLayer);
// 更新UI或重定向等...
}catch(e){
console.error('解析JSON失败:', e.message);
}
}
};
xhr.upload.onprogress = function(progressEvent){ /* 进度条 */ };
xhr.open("POST", uploadUrl, true);
xhr.send(formData);
});
</script>
```
上述脚本片段说明了怎样利用JavaScript捕获HTML `<form>` 的提交动作,阻止其常规流程转而采用XHR对象来进行异步通信的同时配合Layui组件提供视觉上的友好体验。
阅读全文
相关推荐
















