Javascript 如何将$.ajaxStart()和$.ajaxStop()设置为仅在POST请求时触发?
我想为ajax请求设置全局处理程序,但只针对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
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');
});