Parse luminus json响应

时间:2014-03-21 21:17:52

标签: json ajax clojure clojurescript

我认为我有一个相当简单的问题。我有一个带有clojurescript和cljs-ajax的luminus web项目。我所做的是对我的服务器的ajax请求,在我的错误处理程序中,我想解析一个json字符串以显示特定的错误消息。我无法让它发挥作用。 这是我的代码:

Clojurescript:

(defn error-handler [response]
  (js/alert (aget response "message")))
;  (js/alert (:message response ))) neither works here

(defn test-connection []
  (POST "/url"
        {:params        (get-form-data)
         :response-format :json
         :handler       succ-handler
         :error-handler error-handler}))

我的服务器端代码:

(defn connect-jira []
      {:body {:message "No connection to JIRA. Please check your details."}}
      )

(defroutes jira-routes
           (POST "url" []
                 (connect-jira)))

返回自定义错误消息并使用clojurescript解析该错误消息的惯用方法是什么?

更新 我更多地跟踪了我的问题。 POST请求的成功与错误处理程序之间存在差异。让我们说我的服务器端看起来像这样:

(defn connect-jira []
      {:status 200 :body {:message "No connection to JIRA. Please check your details."}})

我的成功处理程序是这样的:

(defn succ-handler [{:keys [message]}]
  (.log js/console message))

然后一切正常,将正确的消息记录到控制台。 但如果我的服务器端看起来像这样(不同的statu):

(defn connect-jira []
      {:status 500 :body {:message "No connection to JIRA. Please check your details."}})

我在cljs端调用错误处理程序

(defn err-handler [{:keys [message]}]
  (.log js/console message))

但是消息是" null"

我还尝试覆盖服务器端的状态文本,但没有成功。那么,如何从服务器端向消息处理程序传递消息?

1 个答案:

答案 0 :(得分:1)

您是否正在使用此库进行AJAX调用?

https://github.com/yogthos/cljs-ajax

如果是这样,你的错误处理程序需要看起来像这样:

(defn err-handler [{:keys [response]}]
  (.log js/console (:message response)))