在 Clojurescript 中序列化表单
我正在通过 Clojurescript 提交一个简单的小表单(由我的 Clojure/Luminus 服务器接收)。如果我只是使用提交按钮提交表单,我可以看到响应包含如下部分:
:form-params {__anti-forgery-token TDsE55j9y7d1dT2eWOGnmECMnnNXWo5tIDVzENc9lr1aiJSqOKIVmmmq/XmaC2M6GHN086+VeROwi7up, app-type professorial}
但是当我用 CLJS-Ajax 发布它时,我看到了:
; ...
:body #object[java.io.ByteArrayInputStream 0x23bbfd9d java.io.ByteArrayInputStream@23bbfd9d]
:form-params {}
; ...
因此,显然,一旦表单到达服务器,它就会被放入 ByteArrayInputStream 中。ajax/clojurescript 代码如下所示:
(defn submit-update-form []
(let [form (.getElementById js/document "userform")
url "/update-user"
csrf-token (.-value (.getElementById js/document "token"))]
(.log js/console form)
(POST url {:handler #(js/alert "Submission!")
:content-type "application/x-www-form-urlencoded"
:body form
:headers {:x-csrf-token csrf-token}})
;(.submit form)
false))
显然,我需要以某种方式将序列化的表单内容放入帖子的 :form-params 中。如何才能做到这一点?
当我尝试启动并运行它时,我的处理程序代码非常简单:
(POST "/update-user" req
(println req))