nol*_*lem 2 html forms http go
我试图从HTML表单下拉列表中获取选项值id.
假设我的HTML文件中有这些行:
<select name="film" id="films">
<option id="1">Godfather</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这在我的Go文件中:
func filmFunc(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
film_raw := r.Form["film"]
film := film_raw[0]
...
}
Run Code Online (Sandbox Code Playgroud)
这将给我来自option("Godfather")的文本,但我需要获取选项id("1")并将其保存为变量.我该怎么做?
这不是HTML的<form>工作原理.当你<select>在a中使用a 时<form>,你必须指定name属性<select>- 你这样做了.你必须指定value的属性<option>标签,不是的id.您也可以指定id属性(例如,如果您想通过其ID引用标记),但这不是在提交表单时发送的内容.
提交表单时,"key"="value"将为其发送一对<select>,其中"key"将是name属性的值<select>,并且"value"将是所选value属性的值<option>.
您可以使用其名称获取提交的表单字段的值Request.FormValue(),请注意,Request.Parseform()如果需要,这也会调用,以便您甚至可以省略该调用.
看这个工作示例:
func formHandler(w http.ResponseWriter, r *http.Request) {
if selectedFilm := r.FormValue("film"); selectedFilm != "" {
log.Println("Selected film:", r.FormValue("film"))
}
w.Write([]byte(html))
}
func main() {
http.HandleFunc("/", formHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
const html = `<html><body>
<form method="POST" action="/">
<select name="film" id="films">
<option value="1">The Godfather</option>
<option value="2">The Godfather: Part II</option>
</select>
<input type="submit" value="Submit">
</form>
</body></html>`
Run Code Online (Sandbox Code Playgroud)
选择"The Godfather"并提交时,控制台显示:
2015/12/05 21:18:42 Selected film: 1
Run Code Online (Sandbox Code Playgroud)
选择"The Godfather: Part II"并提交时,控制台显示:
2015/12/05 21:18:45 Selected film: 2
Run Code Online (Sandbox Code Playgroud)