Golang - 如何获得复选框的所有价值?r.FormValue不工作?

use*_*000 2 checkbox go

这是我的HTML:

<input type="checkbox" name="product_image_id" value="0" />
<input type="checkbox" name="product_image_id" value="1" />
<input type="checkbox" name="product_image_id" value="2" />
Run Code Online (Sandbox Code Playgroud)

如果我检查所有选项并且我r.FormValue("product_image_id")用来获取选中选项的值,我将只获得值0.

我的意思是我只能获得第一个值,虽然已经检查过,但我无法获得其他值.

请帮我.谢谢.

Jim*_*imB 7

Request.FormValue如果有多个值,则仅返回第一个值.从文档:

FormValue返回查询的命名组件的第一个值.

...

要访问同一个键的多个值,请直接调用ParseForm然后进行检查Request.Form.


小智 5

r.FormValue从选项列表中返回第一个值,而不是使用r.Form,这将返回一个列表。您可以通过以下方式访问您的值 r.Form["product_image_id"]


dee*_*ssn 5

超文本标记语言

    <form method="post" name="myform" action="http://localhost:8081/post" >
     <input type="checkbox" name="product_image_id" value="Apple" />
     <input type="checkbox" name="product_image_id" value="Orange" />
     <input type="checkbox" name="product_image_id" value="Grape" />
     <input type="submit">
    </form>
Run Code Online (Sandbox Code Playgroud)

// ProcessCheckboxes will process checkboxes
func ProcessCheckboxes(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    fmt.Printf("%+v\n", r.Form)
    productsSelected := r.Form["product_image_id"]
    log.Println(contains(productsSelected, "Grape"))
}

func contains(slice []string, item string) bool {
    set := make(map[string]struct{}, len(slice))
    for _, s := range slice {
        set[s] = struct{}{}
    }
    _, ok := set[item]
    return ok
}
Run Code Online (Sandbox Code Playgroud)

输出

橙色和葡萄复选框已选中并提交

map[product_image_id:[Orange Grape]]
2016/10/27 16:16:06 true
Run Code Online (Sandbox Code Playgroud)

Apple 和 Orange 复选框已选中并提交

map[product_image_id:[Apple Orange]]
2016/10/27 16:17:21 false
Run Code Online (Sandbox Code Playgroud)