htmx 响应目标扩展

此扩展允许您指定不同的目标元素,以便在收到不同的 HTTP 响应代码时进行交换。

它使用属性名形式为 hx-target-[CODE],其中 [CODE] 是一个数字 HTTP 响应代码,其末尾带有可选的通配符。您也可以使用 hx-target-error,它处理 4xx 和 5xx 响应代码。

每个属性的值可以是

安装

<script src="https://unpkg.com/[email protected]/response-targets.js"></script>

配置(可选)

用法

这是一个示例,它为正常(200)响应定位一个 div,为 404(未找到)响应定位另一个 div,以及为所有 5xx 响应代码定位另一个 div

<div hx-ext="response-targets">
<div id="response-div"></div>
<button hx-post="/register"
hx-target="#response-div"
hx-target-5*="#serious-errors"
hx-target-404="#not-found">
Register!
</button>
<div id="serious-errors"></div>
<div id="not-found"></div>
</div>

有时您可能不想分别处理 5xx 和 4xx 错误,在这种情况下,您可以使用 hx-target-error

<div hx-ext="response-targets">
<div id="response-div"></div>
<button hx-post="/register"
hx-target="#response-div"
hx-target-error="#any-errors">
Register!
</button>
<div id="any-errors"></div>
</div>

2xx 代码将按照前面的示例进行处理。但是,当响应代码为 5xx 或 4xx 时,来自 /register 的响应将替换具有 id any-errorsdiv 的内容。

通配符解析

当状态响应代码与现有的 hx-target-[CODE] 属性名称不匹配时,其表示为字符串的数字部分将被修剪,最后一个字符将被替换为星号 (*)。此查找过程将持续进行,直到找到属性或没有更多数字为止。

例如,如果浏览器收到 404 错误代码,将查找以下属性名称(按给定的顺序)

如果您使用的工具不支持 HTML 属性中的星号,您可以改为使用 x 字符,例如,hx-target-4xx

备注

另请参见