hx-action
Указывает URL для получения запроса
Атрибут hx-action задаёт URL, на который будет отправлен запрос. Он соответствует нативному атрибуту action у форм, поэтому знаком авторам HTML и позволяет постепенно улучшать функциональность.
Синтаксис
<button hx-action="/api/users" hx-method="post">
Create User
</button> Постепенное улучшение
Как и hx-boost, hx-action поддерживает постепенное улучшение — если JavaScript недоступен, браузер использует нативные action/method. В то время как hx-boost задаёт значения по умолчанию для навигации по страницам (цель — body, прокрутка вверх, добавление URL в историю) для <a> и <form>, hx-action даёт вам полный контроль над этим поведением и работает с любым элементом.
<!-- Works natively AND with htmx -->
<form hx-action="/contacts" method="post" hx-target="#results">
<input name="name" required>
<button>Create Contact</button>
</form> В отличие от hx-boost (который всегда отправляет запрос на тот же URL, что и нативный href/action), hx-action при необходимости может указывать на другой URL. По-прежнему рекомендуется проверять заголовки запросов htmx и возвращать фрагменты с того же URL, но если предпочтительно использовать отдельные конечные точки, hx-action позволяет это сделать:
<form action="/contacts/new" <!-- full page (no-JS fallback) -->
hx-action="/fragments/contacts/new" <!-- separate partial endpoint -->
method="post"
hx-target="#contact-list">
<input name="name" required>
<button>Create</button>
</form> Определение метода
htmx определяет HTTP-метод в следующем порядке:
- Краткая форма атрибута элемента (
hx-get,hx-post,hx-put,hx-patch,hx-delete,hx-query) -
Атрибут
hx-methodэлемента -
Атрибут
formmethodкнопки отправки формы - Нативный атрибут
methodформы - По умолчанию —
GET
Краткая форма атрибута задаёт URL и метод одновременно, поэтому она имеет приоритет над hx-method. hx-action задаёт только URL. Если у элемента есть hx-action, htmx не учитывает атрибуты краткой формы, и применяется hx-method.
Остальные шаги совпадают с цепочкой резервных значений, которую используют браузеры.
Это означает, что кнопки отправки формы с formmethod работают ожидаемым образом:
<form hx-action="/contacts/123" method="get" hx-target="#detail">
<button>View</button>
<button formmethod="delete">Delete</button>
</form> При нажатии «Просмотр» отправляется GET-запрос, а при нажатии «Удалить» — DELETE-запрос, что соответствует нативной семантике форм.
Когда использовать
| Шаблон | Сценарий использования |
|---|---|
hx-get, hx-post и т. д. |
Метод известен во время написания кода, и нативный резервный вариант не требуется |
hx-action + hx-method
|
Метод является динамическим (например, формируется на сервере) или требуется чётко разделить URL и метод |
Только hx-action |
Постепенное улучшение — метод берётся из нативных атрибутов, при этом можно использовать отдельную конечную точку AJAX |
hx-boost |
Постепенное улучшение со значениями по умолчанию для навигации по страницам (цель — body, добавление URL в историю) |
Примечания
Пример
<!-- Server-rendered dynamic method -->
<button hx-action="/api/users/123" hx-method="${method}">
${action_label}
</button>
<!-- Equivalent to hx-post shorthand -->
<button hx-action="/api/users" hx-method="post">
Create User
</button>
<!-- same as -->
<button hx-post="/api/users">
Create User
</button>
Licensed under the Zero-Clause BSD License.
https://four.htmx.org/reference/attributes/hx-action/