为了账号安全,请及时绑定邮箱和手机立即绑定

Golang - 如何获取复选框的所有值?r.FormValue 不起作用?

Golang - 如何获取复选框的所有值?r.FormValue 不起作用?

Go
四季花海 2021-12-07 14:19:02
这是我的 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" />如果我检查所有选项并使用r.FormValue("product_image_id")来获取选中选项的值,我将只获取 value 0。我的意思是我只能得到第一个值,虽然它被检查了,但我不能得到其他值。请帮我。谢谢。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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

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

...

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


查看完整回答
反对 回复 2021-12-07
?
隔江千里

TA贡献1906条经验 获得超10个赞

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


查看完整回答
反对 回复 2021-12-07
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

HTML


    <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>


// 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

}

输出


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


map[product_image_id:[Orange Grape]]

2016/10/27 16:16:06 true

选中并提交 Apple 和 Orange 复选框


map[product_image_id:[Apple Orange]]

2016/10/27 16:17:21 false


查看完整回答
反对 回复 2021-12-07
  • 3 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信