事件 - 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>