You can’t/shouldn’t use the Request.FormValue()
function because that only returns 1 value. Use Request.Form["new_data"]
which is a slice of string
s containing all the values.
But note that if you don’t call r.FormValue()
, you have to trigger parsing the form (and populating the Request.Form
map) by calling Request.ParseForm()
explicitly.
You also have an HTML syntax error: the value of the name
attribute is not closed, change it to:
<select id="new_data" name="new_data" class="tag-select chzn-done"
multiple="" style="display: none;">
Here is a complete app to test that it works (error checks 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>
`