事件 - htmx:xhr:abort
当 ajax 请求中止时触发此事件,可以通过监听该事件对 ajax 事件中止时作出报错提示、重试提示等操作。
可以配合 htmx:abort 事件一起使用,对于耗时较长的操作,允许用户中途取消的情况下,由用户通过按钮或菜单发送 htmx:abort 事件,相关的提示在 htmx:xhr:abort 处进行处理。
事件参数
- detail.elt - 触发请求的元素
示例代码
<style>
.error { color: red; display: none; }
.loading { color: blue; }
</style>
<!-- Button to fetch stock data -->
<button hx-get="/api/stock/AAPL"
hx-target="#stock-data"
hx-indicator="#loading"
hx-swap="innerHTML">
Fetch AAPL Stock Price
</button>
<!-- Loading indicator -->
<div id="loading" class="htmx-indicator loading">Loading...</div>
<!-- Container for stock data -->
<div id="stock-data"></div>
<!-- Error message for aborted requests -->
<div id="error-message" class="error">Data fetch was aborted. Please try again.</div>
<script>
// Listen for htmx:xhr:abort event
document.body.addEventListener('htmx:xhr:abort', function(evt) {
console.log('AJAX request aborted for:', evt.detail.xhr.url);
document.getElementById('error-message').style.display = 'block';
setTimeout(() => {
document.getElementById('error-message').style.display = 'none';
}, 3000); // Hide error after 3 seconds
});
</script>