Javascript 如何将$.ajaxStart()和$.ajaxStop()设置为仅在POST请求时触发?

Javascript 如何将$.ajaxStart()和$.ajaxStop()设置为仅在POST请求时触发?,javascript,ajax,jquery,Javascript,Ajax,Jquery,我想为ajax请求设置全局处理程序,但只针对POST案例 不幸的是,全局处理程序$.ajaxStart()和$.ajaxStop()将为所有请求触发,并且据我所知,没有向处理程序函数传递任何参数。与大多数jQuery文档一样,文档也很稀少 我可以从全局ajax处理程序中检测请求类型吗?我想您可以这样做: jQuery.ajaxPrefilter(function( options) { if(options.type !== 'POST') { options.globa

我想为ajax请求设置全局处理程序,但只针对
POST
案例

不幸的是,全局处理程序
$.ajaxStart()
$.ajaxStop()
将为所有请求触发,并且据我所知,没有向处理程序函数传递任何参数。与大多数jQuery文档一样,文档也很稀少


我可以从全局ajax处理程序中检测请求类型吗?

我想您可以这样做:

jQuery.ajaxPrefilter(function( options) {
    if(options.type !== 'POST') {
        options.global = false;
    }
});

请参阅::

您必须改用这些事件:

使用ajaxSend,您仍然可以使用以下命令中止请求:
xhr.abort()

编辑:


最好使用@DemoUser的答案

我不这么认为。虽然ajaxStop在每次ajax调用完成时都会被调用,但是如果有多个请求,那么请求类型应该是什么呢?谢谢!我是否正确地理解,
$.ajaxStart()
为整个队列触发一次,因此它本身没有类型,而
$.ajaxSend()
为每个请求触发,因此它可以访问请求类型?
$(document).ajaxSend(function (event, xhr, options) {
    if (options.type.toUpperCase() === "POST") console.log('POST request');;
}).ajaxComplete(function (event, xhr, options) {
    if (options.type.toUpperCase() === "POST") console.log('POST request');
});