如何为jQuery.post()发起的所有POST请求注册全局事件处理器
实现仅针对POST请求的全局AJAX完成处理器
嘿,这个需求其实很好解决!你之前的思路是对的,但漏掉了ajaxComplete回调里的一个关键参数——请求配置对象。jQuery给这个回调提供了三个参数:事件对象、XHR对象,还有第三个就是包含请求所有配置的settings对象,里面正好有我们需要的请求类型信息。
直接上可行的代码:
$( document ).ajaxComplete(function(event, xhr, settings) { // 统一转成小写判断,避免大小写不一致的问题 if (settings.type.toLowerCase() === 'post') { console.log(xhr); // 这里可以写你要执行的POST请求专属逻辑 } });
小细节说明:
settings.type就是发起AJAX请求时指定的请求方法,$.post本质上就是预设了type: 'POST'的$.ajax,所以这个判断完全能覆盖所有通过$.post发起的请求- 加
toLowerCase()是为了兼容一些特殊情况,比如有人手动写type: 'POST'大写的情况,转成小写判断更稳妥 - 如果你需要在请求发送前就做筛选(比如用
ajaxSend事件),逻辑也是一样的,同样可以通过settings.type来判断
这样修改后,你的全局处理器就只会对POST类型的AJAX请求触发啦!
内容的提问来源于stack exchange,提问作者powerpete
相关产品推荐
相关产品推荐

