gpt4 book ai didi

go - request.Post 表单提交时数组为空

转载 作者:IT老高 更新时间:2023-10-28 13:07:21 24 4
gpt4 key购买 nike

我正在尝试在 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>
`

最佳答案

看来您需要先调用 ParseForm。来自 Go 文档

// 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

还有一些代码可以让您的示例正常工作。

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)
}

关于go - request.Post 表单提交时数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com