#go #post
#Вперед #Публикация
Вопрос:
Есть много похожих вопросов, реализованных в разных стеках, но я не нашел полезного ответа. Этот код смоделирован на основе множества различных руководств, вот одно из них: https://divyanshushekhar.com/golang-forms-data-request-body /
Предполагается, что нажатие кнопки отправляет форму, чтобы можно было использовать значение DataRequest , однако оно не отображается для публикации. Почему?
<!DOCTYPE html>
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="img-src * 'self' data: https:">
<head>
<title>Demo</title>
<link rel="icon" type="image/png" href="./favicon.ico">
</head>
<body style="background-color:#F0F8FF" style="font-size: 18px; font-family:verdana,arial,tahoma,serif;">
<form name="demoForm" style="background-color:#92a8d1">
<fieldset>
<input id="dataRequest" type="request" method="POST" value=""/>
<button type="submit" value="Run" />
</fieldset>
</form>
</body>
</html>
package main
import (
"fmt"
"net/http"
"log"
)
func index() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
http.ServeFile(w, r, "visible/index.html")
return
case "POST":
fmt.Println("Posted a request!")
err := r.ParseForm();
if err != nil {
log.Fatal(err)
}
request := r.Form.Get("dataRequest")
fmt.Println(request)
return
}
})
}
func main() {
mux := http.NewServeMux()
mux.Handle("/", index())
http.ListenAndServeTLS(":443", "./server.crt", "./server.key", mux)
}
Комментарии:
1. Вы помещаете атрибут метода в элемент ввода. Вместо этого он должен быть в элементе формы. И атрибут id для элемента ввода должен быть «name» вместо этого.
2. Ты спас мне жизнь! Теперь я могу перестать биться головой о стену. Если вы разместите свой ответ в отдельном окне, я буду рад его принять 🙂