AjaxComplete经常调用

时间:2015-09-21 12:25:25

标签: javascript jquery ajax

我有这段代码:

$( document ).ajaxComplete(function( event, xhr, settings ) {
    console.log('test');
});

我打开了chrome网络标签,我只能看到一个条目(状态200)。

但控制台显示:

(28) test

为什么经常这样执行?

2 个答案:

答案 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 );
      }
    });
});