通过jQuery设置全局Ajax加载时呈现Loading

2017-10-17 19:19:36来源:CSDN作者:mrhaoxiaojun人点击

分享

全局设置:

$(document).bind("ajaxSend", function () {        $("#loading_message").show();    }).bind("ajaxComplete", function () {        $("#loading_message").hide();    });

特殊Ajax请求如果不想呈现Loading,只需增加:global:false即可

$.ajaxSetup({    beforeSend: function () {    //ajax请求之前    },    complete: function () {         //ajax请求完成,不管成功失败     },     error: function () {        //ajax请求失败    }})$.ajax({   type: "Get",       url: ***********,       global: false   });

说明下: 如果使用 jQuery.ajaxSetup() 去绑定请求前后事件,针对特殊请求使用global:false 则无效

当然,beforeSend/complete/error这些配置在单个的ajax中也是可以去配置的,把他写在ajaxSetup,并且放到公共的页面上,他就是全局的啦~

这里有一点需要说明的是,当同时存在多个ajax时,可能会一个加载完了,就把其他的全都关掉了,对于这个,我能想到的有如下两种解决方案:

我目前的解决办法是让他打开多个(坐标都一样,看不出来),然后关的时候哪个结束了就关哪个,我这里的做法是给ajaxSetup里面增加了个index参数(这玩意儿只能写到设置的对象里面,不然还是所有的ajax共享同一个),有了index,应该就怎么玩都行了。
还有一种解决方案适合于自己去写这个控制逻辑,只显示一个加载框,在加载框上写个当前有多少ajax在执行的参数类似于

,每次开始或结束的时候,去维护ajax-cout的值,并且在ajax结束的时候去判断,如果这个data-ajax-count小于等于0了,把div隐藏起来,应该也是可以的,这种办法我并没有实践.

$(function () {  $.ajaxSetup({     layerIndex:-1,      beforeSend: function () {},      complete: function () {},      error: function () {}  });});

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台