在Ajax进行后台数据请求的过程当中,咱们有时候会但愿用户能知道页面后台还在作一些事情,这时候就须要给用户一个很是明确的提示,也就是咱们所谓的进度条css
废话完成~ajax
实现原理:动画
Jquery能够对ajax进行全局的设置,实现相似于C#中面向切面的效果,即对在Ajax提交以前和提交完成以后,咱们都可以对其进行一系列的操做,因此咱们能够在ajax开始的时候,把Loading框显示出来,在ajax请求完成以后,把loading框关闭掉,基本上就完美实现这个效果了。ui
Jquery全局配置Ajax的方式为:this
1 $.ajaxSetup({ 2 beforeSend: function () { 3 //ajax请求以前 4 }, 5 complete: function () { 6 //ajax请求完成,无论成功失败 7 }, 8 error: function () { 9 //ajax请求失败 10 } 11 });
固然,beforeSend/complete/error这些配置在单个的ajax中也是能够去配置的,把他写在ajaxSetup,而且放到公共的页面上,他就是全局的啦~spa
最后献上代码吧,我这里在作的时候,为了方便,直接使用了layer这个插件来实现loading的效果,并无手动去写css毕竟这不是咱强项~有能力的同窗能够本身去写一下这个loading的效果,用js手动控制其显示隐藏的方式来实现~若是要直接copy,那么请引入layer,传送门:http://layer.layui.com/插件
这里有一点须要说明的是,当同时存在多个ajax时,可能会一个加载完了,就把其余的全都关掉了,对于这个,我能想到的有以下两种解决方案:code
$(function () { $.ajaxSetup({ layerIndex:-1, beforeSend: function () { this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] }); }, complete: function () { layer.close(this.layerIndex); }, error: function () { layer.alert('部分数据加载失败,可能会致使页面显示异常,请刷新后重试', { skin: 'layui-layer-molv' , closeBtn: 0 , shift: 4 //动画类型 }); } }); });