Clojurescript ajax post始终返回零值
我有一个原子,它有一个映射向量来描述我的起始信息,就像这样Clojurescript ajax post始终返回零值,ajax,clojure,clojurescript,Ajax,Clojure,Clojurescript,我有一个原子,它有一个映射向量来描述我的起始信息,就像这样 (def messages (atom [{:message "Hello world" :user "Foo"} {:message "Ajax is fun" :user "Bar"}])) 我的路线是这样安排的 (defroutes home-routes (GET "/messages" [] (response/edn @messages)) (POST "/add-message" [messag
(def messages
(atom
[{:message "Hello world"
:user "Foo"}
{:message "Ajax is fun"
:user "Bar"}]))
我的路线是这样安排的
(defroutes home-routes
(GET "/messages" [] (response/edn @messages))
(POST "/add-message" [message user]
(response/edn
(swap! messages conj {:message message :user user}))))
在我的clojurescript文件中我有这个
(defn render-message [{:keys [message user]}]
[:li [:p {:id user} message " - " user]])
(defn render-messages [messages]
(let [messages-div (domina/by-id "messages")]
(destroy-children! messages-div)
(->> messages
(map render-message)
(into [:ul])
template/node
(append! messages-div))))
(defn by-id [id]
(.getElementById js/document id))
(defn add-message []
(POST "/add-message"
{:format :edn
:params {:message (value (by-id "message"))
:user (value (by-id "user"))}
:handler render-messages
}))
(defn ^:export run []
(GET "/messages" {:handler render-messages})
(listen! (by-id "send")
:click add-message)
)
还有html
<html>
<head></head>
<body>
<div id="messages"></div>
<textarea id="message"></textarea>
<br/>
<input type="text" id="user"></input>
<br/>
<button id="send">add message</button>
<script type="text/javascript" src="hello.js"></script>
<script type="text/javascript">
cfi_webservice.home.run();
</script>
</body>
</html>
添加消息
cfi_webservice.home.run();
Render message函数用于将新输入追加到div中,因此,我的问题是,当我单击带有发送id的按钮时,新的li被添加到ul中,但参数为空…它总是为零。我猜我的添加消息功能不正常,因为两个参数都没有发送到/添加消息路由。有人能帮我解决这个问题吗?而不是:格式:edn我使用了:格式:原始,它正在工作现在。您是否检查了您的服务器代码是否正常工作,例如使用
curl-X POST
?是的,它正常工作,GET正在打印来自atom的消息,POST也正常工作……但是当我单击按钮发送它们时,我似乎没有得到任何参数。这个答案确实有用!