clojure - Clojurescript ajax post always returning nil value -
i have atom vector of maps describes starting messages,like this...
(def messages (atom [{:message "hello world" :user "foo"} {:message "ajax fun" :user "bar"}]))
i have routes set this...
(defroutes home-routes (get "/messages" [] (response/edn @messages)) (post "/add-message" [message user] (response/edn (swap! messages conj {:message message :user user}))))
in clojurescript file have this...
(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) )
and 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>
render message function used append new input div,so problem when click on button send id new li added ul empty parameters...it nil.i guessing add-message function not alright because neither parameter sent /add-message route.can problem?
instead of :format :edn used :format :raw , working now.
Comments
Post a Comment