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 使用compojure解析多个复选框中的值_Clojure_Compojure_Hiccup - Fatal编程技术网

Clojure 使用compojure解析多个复选框中的值

Clojure 使用compojure解析多个复选框中的值,clojure,compojure,hiccup,Clojure,Compojure,Hiccup,我创建了一个小型的compojure web应用程序,它可以使用提供的URL显示从其他网站获取的多个值。目前,这个URL是在我的一个函数中硬编码的,现在我想根据文本字段和复选框中的值添加动态URL创建功能 以下是我的页面的外观: (defn view-layout [& content] (html [:body content])) (defn view-input [] (view-layout [:h2 "Find"] [:form {:metho

我创建了一个小型的compojure web应用程序,它可以使用提供的URL显示从其他网站获取的多个值。目前,这个URL是在我的一个函数中硬编码的,现在我想根据文本字段和复选框中的值添加动态URL创建功能

以下是我的页面的外观:

(defn view-layout [& content]
  (html [:body content]))

(defn view-input []
    (view-layout
     [:h2 "Find"]
     [:form {:method "post" :action "/"}
     ( for [category ["Cat1" "Cat2" "Cat3"]]
      [:input {:type "checkbox" :id category } category ] )       
      [:br]
     [:input {:type "text" :id "a" :value "insert manga name"}] [:br]
     [:input.action {:type "submit" :value "Find"}]
     [:a {:href "/downloads"} "Downloads"]]))

(defn view-output []
  (view-layout
    [:h2 "default images"]
    [:form {:method "post" :action "/"}         
      (for [name (get-content-from-url (create-url))]        
        [:label name [:br]]            
           )]))

(defn create-manga-url
  []
  "http://www.mysite.net/search/?tfield=&check=000")
以下是路线:

(defroutes main-routes            
   (GET "/" []
      (view-input))
  (GET "/downloads" []
      (view-downloads))
  (POST "/" []
       (view-output) ))
目前,我需要
(创建url)
函数(返回一个字符串)的帮助,在该函数中,我希望获取搜索所必需的所有字段(一个文本字段和3个复选框),并解析其中的值,这些值将被输入(连接)url-for复选框,如果选中,复选部分的值将为1,而不是0,否则保持为0(如果选择了两个复选框,则选中=100或010、011)。对于文本字段,tfield=userinputtext

编辑 作为一名.Net和Java开发人员,我花了很多时间,而compojure的这一部分对我来说完全是个谜。 这是我希望通过
(创建url)
函数(以OO风格编写的伪代码)实现的:

我为这个伪代码的样子道歉,但这是我想学习的部分:如何从表单中获取数据并对其进行解析(在本例中,我想将表单字段中的值附加到字符串中)


有人能帮我吗?

首先,您需要向HTML输入元素添加“name”属性。“id”属性不会在post时发送到服务器

接下来,我想一个类似于您的示例的快速方法是:

(POST "/" [a Cat1 Cat2 Cat3] (create-url a [Cat1 Cat2 Cat3]))
然后像这样:

(defn checked? [c]
  (and c (= c "on")))

(defn checked->num [c]
  (if (checked? c) "1" "0"))

(defn create-url [a cats]
  (str "x?tfield=" a "&check="
    (apply str (for [c cats] (checked->num c)))))
或者干脆放下两个助手:

(defn create-url [a cats]
  (str "x?tfield=" a "&check="
     (apply str (map #(if (= "on" %) "1" "0") cats))))

首先,您需要向HTML输入元素添加“name”属性。“id”属性不会在post时发送到服务器

接下来,我想一个类似于您的示例的快速方法是:

(POST "/" [a Cat1 Cat2 Cat3] (create-url a [Cat1 Cat2 Cat3]))
然后像这样:

(defn checked? [c]
  (and c (= c "on")))

(defn checked->num [c]
  (if (checked? c) "1" "0"))

(defn create-url [a cats]
  (str "x?tfield=" a "&check="
    (apply str (for [c cats] (checked->num c)))))
或者干脆放下两个助手:

(defn create-url [a cats]
  (str "x?tfield=" a "&check="
     (apply str (map #(if (= "on" %) "1" "0") cats))))

如果您提供一些带有参数和预期返回值的
创建url
的示例调用,可能会有所帮助。您好,ivat,感谢您的响应。不幸的是,我不知道如何在clojure中解析html页面中的值。我只能提供伪代码,这可以解释我想要实现什么。ivat,我为我的函数提供了一个伪代码。但问题是,我不知道如何使用路径,也不知道如何为函数提供正确的参数。你认为你能帮我吗?也许康博朱尔的文档能帮上忙?如本页所示:如果您提供一些调用
创建url
的示例,并提供参数和预期的返回值,可能会有所帮助。您好,谢谢您的回复。不幸的是,我不知道如何在clojure中解析html页面中的值。我只能提供伪代码,这可以解释我想要实现什么。ivat,我为我的函数提供了一个伪代码。但问题是,我不知道如何使用路径,也不知道如何为函数提供正确的参数。你认为你能帮我吗?也许康博朱尔的文档能帮上忙?如本页所示: