使用 onclick 在 Yesod 中调用 Haskell 函数

Calling Haskell function in Yesod with onclick

是否可以在 Yesod 中使用 "onclick" 设置调用 Haskell 函数?

我要调用的函数:

save_all :: WidgetT App IO[()] save_all = mapM save_cur_answers (exam_questions exam_1)

save_cur_answers :: Question -> WidgetT App IO()
save_cur_answers quest = do
q_box1 <- runInputPost $ ireq checkBoxField (answer_id ((answer_list quest) !! 0))
q_box2 <- runInputPost $ ireq checkBoxField (answer_id ((answer_list quest) !! 1))
q_box3 <- runInputPost $ ireq checkBoxField (answer_id ((answer_list quest) !! 2))
q_box4 <- runInputPost $ ireq checkBoxField (answer_id ((answer_list quest) !! 3))

setSession (question_id quest) $ bool_to_cookie [q_box1, q_box2, q_box3, q_box4]

<input type="radio" onclick="save_all" name="tabs" id="tab#{question_id quest}">

我想在每次单击单选按钮时获取所有复选框的结果并将其保存在 cookie 中。 save_cur_answers 查找具有唯一 answer_id、returns 和 Bool 值的复选框,并存储所有 4 个复选框。

不是你描述的那样直接。您可以让 onclick 使用一些 Javascript 进行 AJAX 调用,这将触发处理函数 运行.