考虑以下compojure路由:
(defroutes main-routes
(POST "/something" r {:body (prn-str (:params r))}))
(def handler
(-> main-routes
(wrap-params)))在用curl测试时,我得到了想要的结果:
curl -d "a=b" localhost:3000/something
{"a" "b"}Post参数由compojure读取并封装到params-map。
但是,这不适用于由cljs-ajax库发起的ajax请求:
(POST "/something" {:handler #(js/alert %)
:params {"a" "b"}})它会提醒"{}“。但是,当将代码更改为使用GET时,它可以正常工作。我猜这是因为浏览器将正文作为输入流发送,而不是纯文本。但我不确定,也不知道如何解决这个问题。
发布于 2016-09-22 13:05:27
看起来cljs-ajax默认情况下会发送一个transit-formatted请求和响应。(参见:format和:response-format defaults here)。您可以尝试在请求映射中指定显式的json响应-
{:handler #(js/alert %)
:params {"a" "b"}
:response-format :json}https://stackoverflow.com/questions/39586974
复制相似问题