Отправка объекта json с помощью jquery и получение nil в compojure - PullRequest
3 голосов
/ 12 октября 2011

Я пытаюсь отправить json из моего javascript (используя jquery post) для создания композиции Я уверен, что есть что-то простое, что я делаю неправильно. Мой файл JavaScript (полностью) выглядит так:

$(document).ready(function() {
    $.post("/", "foo", function(){});
});

мой сервер clojure выглядит так:

(ns spendy.routes
  (:use compojure.core
        spendy.core
    ring.middleware.json-params
        [hiccup.middleware :only (wrap-base-url)])
  (:require [compojure.route :as route]
            [compojure.handler :as handler]
            [compojure.response :as response]
        [clj-json.core :as json]))

(defroutes main-routes
  (GET "/" [] (index-page))
  (POST "/" [sent-object]
    (println "got:" sent-object "from jquery")
    (json/generate-string (respond-to-ajax (json/parse-string (if sent-object sent-object "")))))
  (route/resources "/")
  (route/not-found "Page not found"))

(def app
  (-> (handler/site main-routes)
      (wrap-base-url)))

Когда я загружаю страницу, я ожидаю получить

получил: foo от jquery

но вместо этого я получаю

получил: ноль от JQuery

Что происходит?

Ответы [ 2 ]

4 голосов
/ 12 октября 2011
$(document).ready(function() {
    $.post("/", {foo:"foo"}, function(){});
})

на стороне clojure вы можете получить переменную POST с именем foo

0 голосов
/ 12 октября 2011

Я думаю, что ваше определение приложения выглядит немного странно. Вы звоните (основной маршрут обработчика / сайта), а затем используете его значение в качестве формы для макроса потока. Другие определения маршрута, которые я видел, выглядят как

(def app 
  (-> main-routes
      wrap-base-url))
...