首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wrap-params (cljs-ajax + compojure)

wrap-params (cljs-ajax + compojure)
EN

Stack Overflow用户
提问于 2016-09-20 14:18:23
回答 1查看 220关注 0票数 1

考虑以下compojure路由:

代码语言:javascript
复制
(defroutes main-routes
  (POST "/something" r {:body (prn-str (:params r))}))

(def handler
  (-> main-routes
      (wrap-params)))

在用curl测试时,我得到了想要的结果:

代码语言:javascript
复制
curl -d "a=b" localhost:3000/something
{"a" "b"}

Post参数由compojure读取并封装到params-map。

但是,这不适用于由cljs-ajax库发起的ajax请求:

代码语言:javascript
复制
(POST "/something" {:handler #(js/alert %)
                    :params {"a" "b"}})

它会提醒"{}“。但是,当将代码更改为使用GET时,它可以正常工作。我猜这是因为浏览器将正文作为输入流发送,而不是纯文本。但我不确定,也不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2016-09-22 13:05:27

看起来cljs-ajax默认情况下会发送一个transit-formatted请求和响应。(参见:format:response-format defaults here)。您可以尝试在请求映射中指定显式的json响应-

代码语言:javascript
复制
{:handler #(js/alert %)
 :params {"a" "b"}
 :response-format :json}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39586974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档