Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure-ajax.core POST_Clojure_Clojurescript - Fatal编程技术网

Clojure-ajax.core POST

Clojure-ajax.core POST,clojure,clojurescript,Clojure,Clojurescript,我对来自ajax的帖子有一些问题 我想向我的数据库中添加一个用户,因此我正在使用POST,我想发送的数据的格式是{:id:pass}这是我的POST (定义添加用户![user] (POST)/添加用户 {:params user}) 我所要做的就是在这篇文章中输入上面指定的表单中的信息,这样我就可以将其发送到数据库。我知道这篇文章的论点是正确的,对数据库的查询和我的路线都是正确的,但是我在文章中犯了一个错误,我无法找出我的错误 我正在呼叫添加用户按 (defonce fields (atom

我对来自ajax的帖子有一些问题

我想向我的数据库中添加一个用户,因此我正在使用POST,我想发送的数据的格式是
{:id:pass}
这是我的POST

(定义添加用户![user]
(POST)/添加用户
{:params user})

我所要做的就是在这篇文章中输入上面指定的表单中的信息,这样我就可以将其发送到数据库。我知道这篇文章的论点是正确的,对数据库的查询和我的路线都是正确的,但是我在文章中犯了一个错误,我无法找出我的错误

我正在呼叫
添加用户

(defonce fields (atom {}))


(defn add-user! [user]
  (POST "/add-user!"
       {:params user}))



(defn content
  []
  [:div
   [:div
    [:p "Enter Name:"
     [:input
      {:type      :text
       :name      :name
       :on-change #(swap! fields assoc :id (-> % .-target .-value))
       :value     (:id @fields)}]]
    [:p "Enter Pass:"
     [:input
      {:type      :text
       :name      :pass
       :on-change #(swap! fields assoc :pass (-> % .-target .-value))
       :value     (:pass @fields)}]]
    [:input
     {:type     :submit
      :on-click #(do
                  (add-user! @fields))
      :value    "Enter"}]]
   [:div
    [:p "Id is " (:id @fields)]
    [:p "Pass is " (:pass @fields)]]])
我对clj文件中数据库的查询是

(defn add-user! [user]
  (sql/insert! db :users user))

如果sql是
[clojure.java.jdbc:as sql]
这里没有足够的信息来帮助您完全调试它,但是我怀疑您需要修改您的
文章

(defn add-user! [user] 
  (POST "/add-user!"
    {:format :json
     :params user}))
如果您不提供
:format
,那么cljs ajax默认为发送传输数据,这肯定会混淆需要JSON的服务器

:format
-指定请求主体的格式(传输、JSON等)。还设置适当的内容类型标题。默认值为
:运输
,如果未提供。-


在我身上发生了以下代码:

 (POST "/admin/tests/load"
    {:params {:test-id "83"}
     :headers {"x-csrf-token" csrf-field}
     :handler (fn [r] (do (.log js/console r) (swap! test-state r)))
     :format :json
     :response-format :json
     :error-handler (fn [r] (prn r))})))
“params”总是显示为空“{}”。然后我试着:

 (POST "/admin/tests/load"
    {:params {:test-id "83"}
     :headers {"x-csrf-token" csrf-field}} )

即使在添加了其他选项之后,一切都开始运转良好。我知道,很奇怪

您已经说过您认为知道的是正确的,但是您没有给出任何示例说明如何调用
adduser,并且您尚未确认是否可以使用URL手动执行帖子,并且给出了一个工作帖子及其URL的示例。这样做,包括这些信息,将有助于继续下去。否则,你会要求读者玩猜谜游戏,这似乎是你所做的,一般来说,这不是解决问题的有效方法。这是你的意思,还是你也想看看compojure路线@乔希:你的错误是什么?问题到底出在哪里?不是在数据库中添加用户。如果我尝试添加一个用户,当我检查数据库时,我可以看到一个新用户没有被添加。当您单击
提交
按钮时,有一个HTTP请求正在向
/add user
端点执行?如果是,您是否在服务器中创建了正确的路由?您是否尝试过在服务器端打印或记录一些内容
adduser函数以确保正在调用它?