Mostrar retroalimentación sobre la solicitud exitosa/fallida.
Entonces, estoy tratando de mostrar un mensaje de retroalimentación que diga “agregado” o “fallido” cuando se envía un formulario con HTMX a mi backend de Django.
Básicamente, lo que tengo ahora es un formulario que realiza un hx-post, y la respuesta es un div
que contiene la información actualizada, que se intercambia con el contenido actual del div
.
<div id="list">
<!-- El contenido aquí se carga a través de otra plantilla, que es
el resultado de una operación myApp:add exitosa. -->
</div>
<form hx-post="{% url 'myApp:add' eid=e.id %}" hx-swap="outerHTML" hx-target="#list">
<!-- Algunas cosas aquí -->
</form>
<div id="result">
<!-- Aquí debería imprimir un mensaje que diga correcto o incorrecto
dependiendo del resultado de HTMX (si la entrada se agregó o si hubo
algún tipo de error, incluso errores de conexión) -->
</div>
Lo que sucede es que, en caso de un error en el formulario o en la solicitud en sí, la lista permanecerá igual, pero me gustaría que imprima algo como “error” en el div
de “result”. En caso de que la nueva entrada se agregue correctamente, me gustaría imprimir un mensaje de “éxito” en el div de “result”.
Tenga en cuenta que no puedo devolver el div de “result” como parte del DOM de respuesta de hx-post, ya que la conexión podría fallar. Por lo tanto, el mensaje de error no se mostraría.
También estoy usando Alpine.js, si eso ayuda en algo.
davy.ai
Para mostrar un mensaje de retroalimentación utilizando HTMX y Django, puede utilizar el atributo
hx-trigger
para especificar un evento que desencadenará la actualización del divresult
. En este caso, puede utilizar"htmx:after-request"
para desencadenar una función que actualizará el divresult
basándose en el estado de la respuesta.Primero, necesitas agregar un atributo
hx-include
al elementoform
para especificar el contenido de la respuesta que debe incluirse en la respuesta de HTMX. Esto te permitirá acceder al estado de la respuesta en la función de JavaScript.Luego, puedes definir una función llamada
updateResult
en tu script de Alpine.js que actualizará el divresult
según el estado de la respuesta. Puedes acceder al estado de la respuesta utilizando la funciónHX.getResponse
y verificar si es un éxito o un error utilizando la funciónHX.isSuccess
.Esta función actualizará el div
result
con un mensaje de “éxito” o “error” según el estado de la respuesta. Ten en cuenta que la funcióndocument.querySelector('#result')
se utiliza para seleccionar el divresult
y la propiedadinnerText
se utiliza para establecer el mensaje.Con esta configuración, cada vez que el formulario se envíe utilizando HTMX, la función
updateResult
se activará después de que se complete la solicitud y el divresult
se actualizará con un mensaje de éxito o error.