htmx.ajax()
Отправляет запрос htmx
Используйте htmx.ajax(), чтобы отправить запрос из JavaScript с обработкой запросов, ответов и заменой содержимого htmx.
await htmx.ajax('GET', '/messages', '#messages') htmx заменяет содержимое #messages ответом и разрешает промис после завершения запроса.
Синтаксис
htmx.ajax(method, url) htmx.ajax(method, url, target) htmx.ajax(method, url, options)
Передайте селектор или элемент в качестве целевого объекта:
await htmx.ajax('GET', '/messages', '#messages')
await htmx.ajax(
'GET',
'/messages',
document.querySelector('#messages')
) Используйте объект параметров, чтобы настроить запрос и замену содержимого:
await htmx.ajax('POST', '/messages', {
target: '#messages',
swap: 'beforeend',
values: {
body: 'Hello'
}
}) Параметры
method
Метод HTTP. Названия методов не чувствительны к регистру.
await htmx.ajax('GET', '/messages')
await htmx.ajax('post', '/messages')
await htmx.ajax('DELETE', '/messages/42') url
URL запроса.
await htmx.ajax('GET', '/messages?limit=10') target
Передайте селектор или элемент третьим аргументом.
await htmx.ajax('GET', '/messages', '#messages') Если целевой селектор не соответствует элементам, возвращённый промис будет отклонён.
options
Для более точной настройки используйте объект параметров. Он принимает поля контекста запроса:
await htmx.ajax('POST', '/messages', {
source: '#new-message',
target: '#messages',
swap: 'beforeend',
values: {
body: 'Hello'
},
headers: {
'X-Requested-By': 'compose-form'
}
}) Поддерживаются следующие поля:
| Поле | Описание |
|---|---|
source |
Элемент или селектор, используемый для атрибутов, значений и событий жизненного цикла |
event |
Событие, вызвавшее запрос |
target |
Элемент или селектор, в который помещается ответ |
swap |
Сериализованное значение hx-swap |
select |
Фрагмент ответа, выбранный из его содержимого |
selectOOB |
Фрагмент ответа, выбранный для вставки вне основного целевого элемента |
transition |
Использовать ли переход между представлениями |
values |
Значения, добавляемые к запросу |
headers |
Заголовки запроса |
Если источник и цель не указаны, htmx использует document.body.
Указание источника
Укажите source, если запрос должен выполняться так, как если бы он исходил от элемента:
await htmx.ajax('POST', '/messages', {
source: '#new-message',
target: '#messages',
swap: 'beforeend'
}) Источник предоставляет унаследованные атрибуты htmx, значения формы и элемент, используемый для событий жизненного цикла. Если селектор источника не соответствует элементам, возвращённый промис будет отклонён.
Если target не указан, источником становится целевой объект по умолчанию.
Настройка замены содержимого
Передайте сериализованное значение hx-swap с помощью swap:
await htmx.ajax('GET', '/messages', {
target: '#messages',
swap: 'innerHTML transition:true'
}) Выберите часть ответа с помощью select:
await htmx.ajax('GET', '/messages', {
target: '#messages',
swap: 'innerHTML',
select: '#unread'
}) Используйте selectOOB для вставки содержимого вне основного целевого элемента.
Передача значений
Передайте значения запроса с помощью values:
await htmx.ajax('POST', '/messages', {
values: {
body: 'Hello',
draft: false
}
}) Для GET и DELETE htmx добавляет значения в строку запроса URL. Для остальных методов значения передаются в теле запроса.
Значения исходной формы добавляются автоматически:
await htmx.ajax('POST', '/messages', {
source: '#new-message'
}) Явно указанные значения заменяют значения формы с такими же именами.
Указание заголовков
Передайте заголовки запроса с помощью headers:
await htmx.ajax('GET', '/messages', {
headers: {
'X-Request-Source': 'inbox'
}
}) Передача события
Передавайте событие, вызвавшее запрос, если вызываете htmx.ajax() из обработчика событий:
button.addEventListener('click', event => {
htmx.ajax('POST', '/messages', {
source: button,
event
})
}) Возвращаемое значение
htmx.ajax() возвращает Promise, который разрешается после завершения запроса.
await htmx.ajax('GET', '/messages', '#messages')
console.log('Request complete') См. также
Licensed under the Zero-Clause BSD License.
https://four.htmx.org/reference/methods/htmx-ajax/