我有这段代码:
$( document ).ajaxComplete(function( event, xhr, settings ) {
console.log('test');
});
我打开了chrome网络标签,我只能看到一个条目(状态200)。
但控制台显示:
(28) test
为什么经常这样执行?
答案 0 :(得分:1)
任何ajaxComplete
请求完成后,AJAX
会触发,即使该请求成功也是如此。
200 status code
表示您的请求已经正确,但是,正如您可以在jQuery docs中读到的那样,每次AJAX
请求完成时都会触发回调。
因此,您可以检查您的请求重定向到哪个URL并仅处理您需要的URL。
无论如何(只是旁注)我将使用内置的AJAX
回调函数complete
,如下所示:
$.ajax({
url: url,
data: { data },
complete:function(){
console.log('test');
}
});
答案 1 :(得分:1)
您可以查看这些ajax的网址,只需处理:
$( 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 );
}
});
});