I have this code:
$( document ).ajaxComplete(function( event, xhr, settings ) {
console.log('test');
});
我打开了Chrome网络选项卡,只能看到一条记录(状态为200)。
但控制台显示:
(28) test
为什么会频繁执行?
I have this code:
$( document ).ajaxComplete(function( event, xhr, settings ) {
console.log('test');
});
我打开了Chrome网络选项卡,只能看到一条记录(状态为200)。
但控制台显示:
(28) test
ajaxComplete
会在任何 AJAX
请求完成时触发,无论成功与否。200 状态码
表示您的请求已经成功,但是正如您可以在 jQuery docs 中阅读到的那样,回调函数将在每次 AJAX
请求完成时触发。
因此,您可以检查您的请求重定向到哪个 URL,并仅处理您需要的请求。
无论如何(只是一个侧面的注意),我将使用内置的 AJAX
回调函数 complete
,类似于这样:
$.ajax({
url: url,
data: { data },
complete:function(){
console.log('test');
}
});
$( document ).ajaxComplete(function( event, xhr, settings ) {
console.log('Ajax request completed for: ' + settings.url);
if ( settings.url === "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
xhr.responseText );
}
});
文档准备好时只需绑定一次:
$(function() {
$( document ).ajaxComplete(function( event, xhr, settings ) {
console.log('Ajax request completed for: ' + settings.url);
if ( settings.url === "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
xhr.responseText );
}
});
});
ajaxComplete
每次都会触发,可能是插件在后台使用 ajax。如果可以的话,我建议您使用AJAX complete
回调函数。 - CapitanFindusajaxSetup
。 - CapitanFindus