私はjQuery 1.5.2を使用しており、Ajaxリクエストに複数の成功コールバックを登録しています。最初の成功コールバックでは、応答に必要なすべてのデータが含まれているかどうかを確認し、そうでない場合はすべての後続成功コールバックをキャンセルする必要があります。jQuery ajax成功ハンドラから後続の成功コールバックをすべてキャンセルするにはどうすればよいですか?
注:私は、サーバーから送信されたヘッダにアクセスすることはできません。常に200 Success
を送信します。
セカンド注:私はちょうど2つのコールバックを組み合わせることはできません。これは、コード内の異なる場所にコールバックを登録するより大きなシステムで問題が発生した場合の簡単な例です。
後続の成功コールバックをキャンセルするにはどうすればよいですか?
var request = $.ajax({
url: '/echo/json'
});
// First success handler
request.done(function(data, textStatus, jqXHR) {
console.log('first', jqXHR);
if ($.isEmptyObject(data)) {
// I want to cancel the second success handler here!
}
});
// Second success handler
request.done(function(data, textStatus, jqXHR) {
console.log('second', jqXHR);
});
ありがとう:
いくつかのサンプルコードは、この(jsfiddle)のように見えます!
私はjQueryコードを見ていますが、実際にこれを行う方法はありません。彼らはなぜ2つの呼び出しに分割されますか? – Andrew
ここに複数のコールバックがあるのは何ですか?なぜ関数を最初のコールバックメソッド自体に統合するだけではないのですか? – arviman
これは、複数のコールバックを持つより複雑なシステムの簡単な例です。 –