html – 如何使用Golang从表单中获取多选值?

前端之家收集整理的这篇文章主要介绍了html – 如何使用Golang从表单中获取多选值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的表单中有一个多选输入,我试图在我的处理程序中获取所选的值,但我不能,我怎么能得到这些值?
<form action="process" method="post">
    <select id="new_data" name="new_data class="tag-select chzn-done" multiple="" style="display: none;">
    <option value="1">111mm1</option>
    <option value="2">222mm2</option>
    <option value="3">012nx1</option>
    </select>
</form>

我的处理程序:

func myHandler(w http.ResponseWriter,r *http.Request) {
    fmt.Println(r.FormValue("new_data")) // result-> []
    fmt.Println(r.Form("new_data")) // result-> []
}

表单序列化数据,从JS控制台中选择选项1和2:

>$('#myform').serialize() 
   >"new_data=1&new_data=2"

解决方法

您不能/不应该使用 Request.FormValue()函数,因为它只返回1个值.使用Request.Form [“new_data”],它是包含所有值的字符串片.
但请注意,如果不调用r.FormValue(),则必须通过显式调用 Request.ParseForm()来触发解析表单(并填充Request.Form映射).

您还有一个HTML语法错误:name属性的值未关闭,请将其更改为:

<select id="new_data" name="new_data" class="tag-select chzn-done"
    multiple="" style="display: none;">

这是一个完整的应用程序来测试它的工作原理(错误检查ommited!):

package main

import (
    "fmt"
    "net/http"
)

func myHandler(w http.ResponseWriter,r *http.Request) {
    if r.Method == "POST" {
        // Form submitted
        r.ParseForm() // required if you don't call r.FormValue()
        fmt.Println(r.Form["new_data"])
    }
    w.Write([]byte(html))
}

func main() {
    http.HandleFunc("/",myHandler)
    http.ListenAndServe(":9090",nil)
}

const html = `
<html><body>
<form action="process" method="post">
    <select id="new_data" name="new_data" class="tag-select chzn-done" multiple="" >
        <option value="1">111mm1</option>
        <option value="2">222mm2</option>
        <option value="3">012nx1</option>
    </select>
    <input type="Submit" value="Send" />
</form>
</body></html>
`
原文链接:https://www.f2er.com/html/225934.html

猜你在找的HTML相关文章