如何在$.ajaxSetup的Ajax拦截器中获取请求URL
针对特定Ajax请求跳过加载器显示的解决方案
嘿,这个需求很好实现!你只需要在beforeSend和complete的回调里拿到请求的URL,做个简单判断,就能跳过graph.facebook.com相关请求的加载器显示啦。
原来的beforeSend和complete回调其实还有第二个参数settings,它包含了当前Ajax请求的所有配置信息,其中settings.url就是本次请求的完整地址。我们可以利用这个属性来做判断:
$.ajaxSetup({ beforeSend: function (xhr, settings) { // 只在请求不是指向graph.facebook.com时显示加载器 if (!settings.url.startsWith('http://graph.facebook.com')) { $('#loader').removeClass('display-none'); } }, complete: function(xhr, status, settings){ // 同样,只有非facebook的请求完成后才隐藏加载器 if (!settings.url.startsWith('http://graph.facebook.com')) { $('#loader').addClass('display-none'); } } });
小提示:
- 如果需要兼容一些不支持
startsWith的老旧浏览器,可以换成indexOf的写法:settings.url.indexOf('http://graph.facebook.com') === 0 - 记得在
complete里也加上判断,避免facebook的请求完成后,不小心修改了加载器的状态,导致显示异常。
这样就完美实现你的需求啦!
内容的提问来源于stack exchange,提问作者Rahbar Ali
相关产品推荐
相关产品推荐

