我在Goji框架上运行了一些东西:
package main import ( "fmt" "net/http" "github.com/zenazn/goji" "github.com/zenazn/goji/web" ) func hello(c web.C, w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %s!", c.URLParams["name"]) } func main() { goji.Get("/hello/:name", hello) goji.Serve() }
我希望有人能帮助我做的是弄清楚如何提交HTML表单以将数据发送到Golang代码。
因此,如果存在一个带有name属性的输入字段,并且该属性的值是name,并且用户在其中输入名称并提交,那么在提交的表单页面上,Golang代码将打印问候,名称。
这是我能想到的:
package main import( "fmt" "net/http" "github.com/zenazn/goji" "github.com/zenazn/goji/web" ) func hello(c web.C, w http.ResponseWriter, r *http.Request){ name := r.PostFormValue("name") fmt.Fprintf(w, "Hello, %s!", name) } func main(){ goji.Handle("/hello/", hello) goji.Serve() }
这是我的hello.html文件:
在身体里:
<form action="" method="get"> <input type="text" name="name" /> </form>
如何连接hello.html到hello.go使Golang代码获取的是在表单提交页面输入并返回打招呼,叫什么名字?
hello.html
hello.go
我将不胜感激任何帮助!
为了读取html表单值,您必须先调用r.ParseForm()。您可以获取表单值。
r.ParseForm()
所以这段代码:
func hello(c web.C, w http.ResponseWriter, r *http.Request){ name := r.PostFormValue("name") fmt.Fprintf(w, "Hello, %s!", name) }
应该是这样的:
func hello(c web.C, w http.ResponseWriter, r *http.Request){ //Call to ParseForm makes form fields available. err := r.ParseForm() if err != nil { // Handle error here via logging and then return } name := r.PostFormValue("name") fmt.Fprintf(w, "Hello, %s!", name) }
编辑: 我应该注意,这是在学习net/http软件包时使我绊倒的一点
net/http