| 場景 | 觸發時機 | 適用 API |
|---|---|---|
| getJSON 請求成功 | 收到 HTTP 200 且 JSON 解析成功 | `$.getJSON(url, data, successCallback)` 或 `$.ajax({...}).done()` |
| DOM 結構就緒 | HTML 解析完畢,`document.readyState === 'interactive'` | `$(function(){ ... })` 即 `$(document).ready()` |
| 頁面所有資源加載完畢 | 圖片、CSS、JS、iframe 全部下載完成 | `$(window).on('load', function(){ ... })` |
// 1. 頁面骨架就緒 → 發起請求 → 數據到達 → 渲染
$(function() {
$.getJSON('/api/data', function(res) {
renderList(res); // 此處 DOM 已就緒,可直接操作
});
});
// 2. 需等圖片/字體載入後再計算佈局(如瀑布流、懶加載)
$(window).on('load', function() {
$.getJSON('/api/data', function(res) {
renderMasonry(res); // 此時圖片尺寸已知
});
});
// 3. Loading 狀態管理(請求發出 → 返回隱藏)
function loadData() {
showLoading();
$.getJSON('/api/data')
.done(function(res) { render(res); })
.fail(function() { showError(); })
.always(function() { hideLoading(); }); // 成功/失敗都執行
}
**核心:明確你要等的是「數據」還是「DOM」還是「資源」,選對鉤子,不用猜。**