2016-11-14 4 views
2

Я пытаюсь реализовать AJAX POST в ClojureScript.ClojureScript AJAX POST для отправки json-данных

Ниже приведен код, я использую

(defn handler [response] 
    (.log js/console (str response))) 

(defn test-post [name email] 
    (let [data {:name name :email email}] 
    (POST "http://localhost:5000/Add/" 
    { 
    :format {"Accept" :json} 
    :body (.stringify js/JSON (clj->js data)) 
    :handler handler 
    :error-handler (fn [r] (prn r)) 
    :response-format {"Content-Type" "application/json;charset=utf-8"} 
    } 
    ))) 

Когда я называю метод Post. По форме Submit? Кроме того, почтовый запрос ударяет по URL-адресу, но json-данных нет.

+0

[Access-Control-Allow-Origin] (https://www.w3.org/TR/access-control/#access-control-allow-origin-response-header) является заголовком ** ответа ** а не заголовок запроса, он бесполезен в запросе. – Marcs

+0

Откуда: POST? Предположительно из какой-то библиотеки? – Dan

+0

POST является частью библиотеки cljs-ajax – zain

ответ

2

Предполагаю, что вы используете cljs-ajax для отправки данных.

Что вам действительно нужно в чем-то вроде этого:

(let [data {:name name :email email}] 
(POST "/Add" 
    {:format :json 
    :params data 
    :handler handler 
    :error-handler (fn [r] (prn r))}))) 

Вы можете просто передать простой объект Clojure как Params, просто установите :json как формат данных (по умолчанию :transit).

Второй вопрос довольно открытый и зависит от вашей установки. Я думаю, что самым простым в использовании является reagent, вот хороший example с отправкой данных формы.

+0

Я думаю, что мне не хватало: header {"Accept" "application/json": content-type "application/json; charset = utf-8"} – zain

Смежные вопросы