首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在post请求后使用cljs-ajax在cljs中加载另一个页面

如何在post请求后使用cljs-ajax在cljs中加载另一个页面
EN

Stack Overflow用户
提问于 2016-01-09 16:53:45
回答 1查看 451关注 0票数 2

我已经创建了一个登录页面login.cljs,handler.clj.here是我的代码login.cljs:-

代码语言:javascript
复制
 (defn handler [response]
  (let[status (aget (clj->js response) "status")
   msg (str (aget (clj->js response) "greeting"))]
   (if (= status 200)
    (home/home-root)
    (js/alert "Invalid username or password"))
   ))
 (defn handle-submit [e app owner]
  (let [[user user-node] (value-from-node owner "username")
        [pass pass-node] (value-from-node owner "password")]
  (POST "/hello"
     {:params {:username user :password pass}
     :handler handler
     :error-handler error-handler
     :format :json
     :response-format :json})
   ))

(defn login-view [app owner]
  (reify
    om/IRender(render [this]
     (dom/div nil
      (dom/h1 nil "Login")
       (dom/input #js {:type "text" :placeholder "Your Name" :ref "username"})
       (dom/input #js {:type "password" :placeholder "Your Password" :ref "password"})
       (dom/button
             #js { :onClick (fn [event] (handle-submit event app owner))}
             "submit")
    ))))
(defn say-hello []
 (om/root
 {} login-view (.getElementById js/document "content")))

家.:-

代码语言:javascript
复制
(defn home-view [app owner]
    (reify
      om/IRender
      (render [this]
        (dom/div nil "Welcome"
  ))))
(defn home-root []
  (om/root
  {}
  home-view
  (.getElementById js/document "content"))

:-

代码语言:javascript
复制
(defn login-check! [request]
  (let [user (get-in request [:params :username])
    pass (get-in request [:params :password])]
   (cond
    (and(= user "admin")(= pass "admin")) (response/response {:greeting user
                     :status 200})
   :else (response/response {:greeting "Invalid username or password"
                          :status 403}))
  ))

 (defroutes app-routes
  (GET "/" [] (response/resource-response "index.html" {:root "public"}))
  (route/resources "/")
  (POST "/hello" request (login-check! request))
  (GET "/home" request (response/response {:body "home"}))
  (route/not-found "Not Found"))

我需要加载主页视图时,它的有效登录。这里,我将另一个cljs方法称为“home/home-root”,但它不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-01 05:28:03

这里我有一个解决方案.我不知道有多少正确,但它的工作好,我创建了一个新的defn页面使用试剂如下:

代码语言:javascript
复制
 (defn page [page-component]
       (reagent/render-component [page-component] 
                             (.getElementById js/document "content")))

并从login.cljs处理程序方法调用此函数:

代码语言:javascript
复制
 (defn handler [response]
      (page home-root))

现在将调用页面方法,并将主根cljs传递给它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34696229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档