Clojure - выполнение запроса AJAX не возвращает JSON - PullRequest
0 голосов
/ 06 июля 2019

У меня есть веб-сайт, который я разрабатываю, внутренний маршрут, который не работает, это / login с compojure маршрутом как:

 (POST login "/" [] check-admin-before-logging)

Вот что делает функция check-admin-before-logging:

(defn redirect-admin-to-page
  []
  (-> (response/redirect "/admin/home")
      (assoc :body "logging you in...")
      (assoc :cookies {:token (token/sign-token)})))

;; function that checks whether credentials are in fact valid.
;; check-admin is a db func which compares hashed pswd with input.
(defn check-admin-before-logging-in
  [request]
  (let [username (:username (:params request))
        password (:password (:params request))]
    (if (check-admin username password)
      (redirect-admin-to-page username)
      (str "username : " username " and password " password " is not valid.\n" request))))

На данный момент он просто возвращает строку, как в целях тестирования.

и для приложения я обернул его в следующее промежуточное ПО:

(def app
  (-> all-routes
      (wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false))
      (wrap-json-body)
      ;; (wrap-json-params)
      (wrap-json-response)
))

Теперь, когда я делаю AJAX-запрос со следующим интерфейсом:

(defn submit
  []
  (let [username *grabbed from input field...*
        password *grabbed from input field...*]
     (POST "/login" {:params {:username username :password password}})))

Но проблема возникает, когда я нажимаю кнопку Я получаю это . Консоль показывает результат самого запроса post: параметры: пустые, а некоторые искаженные данные JSON в ключе: body. Если бы я попытался включить

(wrap-json-params) 

в приложении я получу ноль в ключах: body и: params. Более того, кажется, что есть проблема с выводом, поскольку у cheshire есть проблемы с его разбором. Если я оставлю библиотеку ring-json в стороне и просто установлю значения по умолчанию для приложения, я получу это для ключа тела

:body #object[org.eclipse.jetty.server.HttpInputOverHTTP 0x6ef9a9e1 HttpInputOverHTTP@6ef9a9e1]

У меня вопрос, как мне изменить json, чтобы его можно было понять с помощью wrap-json-params или cheshire? Любой совет очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...