我正在使用jQuery 1.5.2,並有多個成功回調註冊到Ajax請求。在第一次成功回調中,我需要檢查響應是否具有我需要的所有數據,如果沒有,則取消所有後續成功回調。如何從jQuery ajax成功處理程序中取消所有後續成功回調?
注意:我無權訪問由服務器發送的標頭。它總是發送一個200 Success
。
第二個注意:我不能只是結合這兩個回調。這是一個簡單的例子,我用一個更大的系統在代碼中的不同位置註冊回調。
如何取消後續成功回調?
一些示例代碼看起來像這樣(jsfiddle):
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);
});
謝謝!
我在看jQuery代碼,我真的不能看到這樣做的一種方式。爲什麼他們分成兩個電話呢? – Andrew
這裏有多個回調有什麼意義?爲什麼不將這些函數集成到第一個回調方法本身中呢? – arviman
這是一個具有多個回調的更復雜系統的簡化示例。 –