事件 - htmx:sendError

htmx:sendError 是 HTMX 在发起请求(如 GET、POST 等)时,如果请求发送失败(网络错误、请求被阻止、权限问题等),会触发的一个事件。

事件参数

  • detail.xhr - XMLHttpRequest
  • detail.elt - 触发请求的元素
  • detail.target - 请求的目标
  • detail.requestConfig - AJAX请求的配置

常见的发生原因

场景 描述
网络中断 客户端断网时请求失败
CORS 跨域问题 请求被浏览器拦截
请求被浏览器拒绝 比如某些扩展阻止
JS 异常 beforeRequest 钩子中抛出异常

示例代码

<button 
  hx-get="https://api.example.com/protected-data" 
  hx-target="#result" 
  hx-swap="innerHTML">
  请求数据
</button>

<div id="result"></div>
<script>
  document.body.addEventListener("htmx:sendError", function(evt) {
    console.error("请求发送失败!");
    alert("请求失败,请检查网络或联系管理员。");
    console.log("失败的元素:", evt.detail.elt);
    console.log("异常信息:", evt.detail.error);
  });
</script>

与其它错误事件的对比

事件名 说明
htmx:sendError 请求 未能发送
htmx:responseError 请求已发送,服务器返回错误状态码(如 500)
htmx:swapError 内容插入失败
htmx:targetError 找不到插入目标元素