我有一个带有地图矢量的原子来描述我的起始信息,就像这样......
(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>
渲染消息功能用于将新输入附加到div中,所以我的问题是当我点击按钮时发送id新的li被添加到ul但是带有空参数...它总是为零。我在猜我的添加消息功能不正常,因为这两个参数都没有发送到/ add-message route。任何人都可以帮忙解决这个问题吗?
答案 0 :(得分:2)
而不是:format:edn我用过:format:raw,它现在正在运行。