如果您提交 HTML 片段,需要发布/重定向/获取?

问题描述

过去我使用 Post/Redirect/Get 模式:

  • html 已通过 POST 提交到服务器
  • 服务器处理了数据。
  • 如果一切正常,服务器会响应一个 http 302(重定向
  • 客户端将页面重定向到新位置。

如果您通过 htmx 提交 html 片段,还需要这样做吗?

解决方法

总的来说,您不需要实现 PRG 模式。

由于 htmx 使用 AJAX 进行大多数交互,浏览器历史记录中没有请求,点击刷新不会重新提交 POST(或 DELETE 或其他)。

也就是说,htmx 尝试与 PRG 模式兼容,并在重定向发生时尝试更新 URL:

https://github.com/bigskysoftware/htmx/blob/1d4c79490e491813ffb780354ec5df6d080b1e09/src/htmx.js#L2146

https://github.com/bigskysoftware/htmx/blob/1d4c79490e491813ffb780354ec5df6d080b1e09/src/htmx.js#L1851

如果您执行内联编辑之类的操作:

https://htmx.org/examples/click-to-edit/

这一点在很大程度上变得毫无意义,因为您可以在与查看 URL 相同的 URL 上使用编辑 UI。