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

时间:2013-06-07 09:35:08

标签: javascript ajax jquery

我想为ajax请求设置全局处理程序,但仅适用于POST个案例。

不幸的是,全局处理程序$.ajaxStart()$.ajaxStop()将为所有请求触发,据我所知,没有参数传递给处理函数。文档也很稀缺,因为大多数jQuery文档都是。

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

2 个答案:

答案 0 :(得分:5)

我猜你可以这样做:

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

请参阅:: jQuery prefilters

答案 1 :(得分:5)

您必须改为使用这些活动:ajaxSend() ajaxComplete()

$(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');
});

使用ajaxSend,您仍然可以使用:xhr.abort()

中止请求

<强> 编辑:

最好在@ DemoUser的回答中使用jQuery.ajaxPrefilter