事件 - htmx:afterRequest
此事件在 AJAX 请求完成后触发,无论是请求成功(尽管可能返回远程错误代码,例如404)还是网络错误。此事件可以与 htmx:beforeRequest 配对使用,以围绕请求周期包装行为。
这时候响应数据已经收到,页面内容已根据 hx-target 和 hx-swap 更新完成,你可以用这个事件做一些通用的操作,比如:
-
隐藏 loading 状态
-
日志记录
-
统一错误处理或提示
-
表单重置、动画处理等
事件参数
- detail.elt - 发送请求的元素
- detail.xhr - 这XMLHttpRequest
- detail.target - 请求的目标
- detail.requestConfig - AJAX请求的配置
- detail.successful - 如果响应具有 20x 状态代码或 detail.isError = false 在 htmx:beforeSwap 事件中被标记,则为 true,否则为 false
- detail.failed - 如果响应没有 20x 状态代码或者 detail.isError = true 在 htmx:beforeSwap 事件中被标记,则为 true,否则为 false
示例代码
全局监听:
<script>
document.body.addEventListener('htmx:afterRequest', function(event) {
console.log('HTMX 请求完成!');
console.log('请求信息:', event.detail.requestConfig);
console.log('响应信息:', event.detail.xhr.responseText);
});
</script>
局部监听:
<button type="button"
hx-post="/test"
hx-on:htmx:after-request="console.log('after-request');"
>Submit</button>