我想在go中处理一个简单的html表单.但是,我无法在提交后获得任何帖子数据.r.Form地图始终是[].不知道我哪里错了.
提前致谢.
这是代码http://play.golang.org/p/aZxPCcRAVV
package main
import (
"html/template"
"log"
"net/http"
)
func rootHandler(w http.ResponseWriter, r *http.Request) {
t, _ := template.New("form.html").Parse(form)
t.Execute(w, "")
}
func formHandler(w http.ResponseWriter, r *http.Request) {
log.Println(r.Form)
rootHandler(w, r)
}
func main() {
http.HandleFunc("/", rootHandler)
http.HandleFunc("/login", formHandler)
http.ListenAndServe("127.0.0.1:9999", nil)
}
var form = `
<h1>Login</h1>
<form action="/login" method="POST">
<div><input name="username" type="text"></div>
<div><input type="submit" value="Save"></div>
</form>
`
Run Code Online (Sandbox Code Playgroud)
mas*_*ase 13
看起来你需要先调用ParseForm.来自go docs
// Form contains the parsed form data, including both the URL
// field's query parameters and the POST or PUT form data.
// This field is only available after ParseForm is called.
// The HTTP client ignores Form and uses Body instead.
Form url.Values
Run Code Online (Sandbox Code Playgroud)
还有一些代码让你的例子工作.
func formHandler(w http.ResponseWriter, r *http.Request) {
err := r.ParseForm()
if err != nil {
//handle error http.Error() for example
return
}
log.Println(r.Form)
rootHandler(w, r)
}
Run Code Online (Sandbox Code Playgroud)