標準 AJAX 請求範例
<?php
$.ajax({
type: "GET",
dataType: "html",
url: "index.html",
error: function(msg) { alert("error"); },
complete: function(msg) { alert("complete"); },
success: function(msg) { alert("success"); }
});
?>
事件執行順序 (成功情況)
ajaxStart (全域) - 首個 AJAX 請求開始
beforeSend (區域) - 發送前,可修改 jqXHR、取消請求
ajaxSend (全域) - 發送前全域事件
success (區域) - 成功回調
ajaxSuccess (全域) - 成功全域事件
complete (區域) - 完成回調 (成功/失敗皆執行)
ajaxComplete (全域) - 完成全域事件
ajaxStop (全域) - 所有 AJAX 請求結束
事件執行順序 (失敗情況)
ajaxStart (全域)
beforeSend (區域)
ajaxSend (全域)
error (區域) - 失敗回調
ajaxError (全域) - 失敗全域事件
complete (區域)
ajaxComplete (全域)
ajaxStop (全域)
全域 vs 區域事件對照
| 階段 | 區域事件 (個別請求) | 全域事件 (所有請求) |
| 開始 | beforeSend | ajaxStart / ajaxSend |
| 成功 | success | ajaxSuccess |
| 失敗 | error | ajaxError |
| 完成 | complete | ajaxComplete |
| 結束 | - | ajaxStop |
實務應用場景
- 全域事件:Loading 指示器、統一錯誤處理、權限攔截、請求計數
- 區域事件:業務邏輯處理、資料渲染、表單驗證回饋
控制全域事件觸發
$.ajax({
global: false, // 停用此請求的全域事件
// ...
});
// 或全域關閉
$.ajaxSetup({ global: false });