htmx and django: return HX-Trigger header with json data show error `SyntaxError: JSON.parse...`

htmx and django: return HX-Trigger header with json data show error `SyntaxError: JSON.parse...`

我正在按照 https://htmx.org/headers/hx-trigger/

中的示例进行操作

我的看法

def my_view(request):
    res = render(request, 'index.html')
    res.headers["HX-Trigger"] = ...
    return res

此代码有效

res.headers["HX-Trigger"] = "showMessage"

而下面的代码会导致错误 SyntaxError: JSON.parse: expected property name or '}' at line 1 column 2 of the JSON data

res.headers["HX-Trigger"] = {"showMessage": "Here Is A Message"}

我该怎么办?

您需要传递一个有效的 JSON 字符串作为 header - 而不是字典,因为字典不会自动转换为 JSON (这就是客户端失败的原因解析它)。

以下将起作用:

res.headers["HX-Trigger"] = '{"showMessage": "Here Is A Message"}'   # Note, this is a string

或者,如果您不想手动生成 JSON 字符串:

import json

res.headers["HX-Trigger"] = json.dumps({"showMessage": "Here Is A Message"})