我正在编写一个简单的 HttpKit / Ring 应用程序,并试图将一些数据从表单发布到它。
这是我的服务器代码的相关部分:
(defn save-page [request]
(let [qs (:query-string request)
fp (:form-params request)]
(println "SAVE PAGE :: ")
(println (str request))
(println (str "CCCC" fp))
(println (str qs))))
(defn handler [{:keys [uri request-method] :as request}]
(let []
(cond
; view a page
(= uri "/clj_ts/view")
(get-page request)
(= uri "/clj_ts/save")
(save-page request)
:otherwise
.. STUFF )))
(defn -main [& args]
(-> #'handler
(wrap-content-type)
(wrap-keyword-params)
(wrap-params)
(wrap-reload)
(wrap-resource "clj_ts")
(run-server {:port 0})))
这是发布到它的客户端代码。
(defn generate-form-data [params]
(let [form-data (js/FormData.)]
(doseq [[k v] params]
(.append form-data (name k) v))
form-data))
(defn save-page! []
(let [page-name (-> @db :current-page)
new-data (-> js/document
(.getElementById "edit-field")
.-value)
form-data (generate-form-data
{"page" page-name
"data" new-data})]
(js/console.log "SAVING")
(js/console.log (str new-data))
(.send XhrIo
"/clj_ts/save"
(fn [e] e)
"POST"
form-data)))
现在,我可以从浏览器的开发人员工具中看到,我正在使用包含页面和数据值的表单数据发布一些内容。
但是在我的服务器端代码中,请求的 :form-params 是空的。
我错过了什么或做错了什么?