2015-09-21 18 views
6

私はこのコードを持っていると呼ばれます。AjaxCompleteは、多くの場合、

しかし、コンソールが表示されます。

(28) test 

は、それは多くの場合、これを実行しているのはなぜ?

答えて

1

AJAXリクエストが完了したときに、成功したかどうかに関わらず、ajaxCompleteがトリガーされます。
200 status codeは、リクエストが正しく行われたことを意味しますが、jQuery docsで読むことができるので、AJAXリクエストが完了するたびにコールバックが発生します。

したがって、あなたのリクエストがリダイレクトされていることを確認して、必要なものだけを処理できます。

$.ajax({ 
    url: url, 
    data: { data }, 
    complete:function(){ 
     console.log('test'); 
    } 
}); 
+0

orktabには1つのエントリしかありません。 他のステータスが200以外のエントリはありません。 console.log(settings.url)は28回同じURLを表示しますが、このajaxリクエストは1回のみ送信されます。 – phpjssql

+0

'ajaxComplete'は毎回起動しますが、後ろにajaxを使用するプラグインになる可能性があります。できるだけ 'AJAX complete'コールバックを使うことをお勧めします。 – CapitanFindus

+0

私はajaxCompleteしか使用できません。 同じリクエストか多分IDかどうかをチェックする可能性はありますか? URLを何度もリクエストできるので、URLを確認できません。 – phpjssql

1

あなたはこれらajax'esのURLをチェックし、のみ必要を扱うことができます:

私は内蔵の AJAXコールバック関数 complete、次のようなものを使用します。とにかく

(ちょうど側の注記)それバインド

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

一度だけドキュメント準備:NETWで

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

私は同じURLを28回取得しますが、このajaxリクエストは一度だけ送られます。 – phpjssql

+0

@phpjssql $(document).unbind( 'ajaxComplete');を置くと、 – Grievoushead

+0

を1回だけバインドするようにしてください。私のコードの前にそれは動作します。 しかし、既存の完了を解除することなく、この問題をどのように解決できますか? – phpjssql

関連する問題