Ajax 事件
Ajax 要求會產生許多不同的事件,您可以訂閱這些事件。以下是事件的完整清單,以及觸發順序。
有兩種事件類型
本機事件
這些是可以訂閱的回呼,就像在 Ajax 要求物件中一樣
1
2
3
4
5
6
7
8
9
|
|
全域事件
這些事件觸發在 document
上,呼叫任何可能正在監聽的處理常式。您可以像這樣監聽這些事件
$(document).on("ajaxSend", function(){ $("#loading").show(); }).on("ajaxComplete", function(){ $("#loading").hide(); });
可以透過傳入全域選項來停用特定 Ajax 要求的全域事件,就像這樣
1
2
3
4
5
|
|
事件
以下是 Ajax 事件的完整清單,以及觸發順序。縮排的事件會針對每個 Ajax 要求觸發 (除非已設定全域選項)。ajaxStart 和 ajaxStop 事件是與所有 Ajax 要求相關的事件。
- ajaxStart (全域事件)
如果 Ajax 要求已啟動,且目前沒有其他 Ajax 要求正在執行,則會觸發此事件。- beforeSend (本機事件)
這個事件在 Ajax 請求開始前觸發,讓您可以修改 XMLHttpRequest 物件(必要時設定其他標頭)。 - ajaxSend(全域事件)
這個全域事件也會在請求執行前觸發。 - success(區域事件)
只有在請求成功時才會呼叫這個事件(沒有伺服器錯誤,沒有資料錯誤)。 - ajaxSuccess(全域事件)
只有在請求成功時才會呼叫這個事件。 - error(區域事件)
只有在請求發生錯誤時才會呼叫這個事件(請求中絕不會同時有錯誤和成功回呼)。 - ajaxError(全域事件)
這個全域事件的行為與區域錯誤事件相同。 - complete(區域事件)
無論請求是否成功,都會呼叫這個事件。您將永遠會收到一個 complete 回呼,即使是同步請求。 - ajaxComplete(全域事件)
這個事件的行為與 complete 事件相同,而且會在每次 Ajax 請求結束時觸發。
- beforeSend (本機事件)
- ajaxStop(全域事件)
如果沒有更多 Ajax 請求正在處理中,就會觸發這個全域事件。