原谅我,但我不太懂英语。我使用翻译 deepl.com。在这一点上,俄罗斯程序员无法帮助我。我不是一个程序员,“我只为自己编程”。我有一个问题 - 我无法向服务器发送 POST (JSON) 请求。
我想做什么 - Fiber的服务器通过POST请求(JSON,XMLHttpRequest)从html页面获取2个参数,并在处理后服务器给我一个字符串。我使用Fiber是因为我曾经为自己制作了一个小型静态网站,并且在“示例”中都很清楚。我做了一个快速的ctrl+ C - ctrl + V,只是调整了我的代码。然后我调整了html,js,css。我有一个工作网站!:-)
main.go - 启动服务器(这里没有问题)
package main
import (
"github.com/gofiber/fiber"
"github.com/gofiber/fiber/middleware/logger"
)
func main() {
app := fiber.New()
app.Use(logger.New())
app.Static("/", ".")
app.Get("/", func(c *fiber.Ctx) error {
return c.SendFile("./main.html")
})
app.Post("/search", PostTodo)
app.Listen(":3003")
}
search.go - 关于接收数据后要做什么的逻辑。(到目前为止只是一种模板,有一个小问题,但它大多有效)。
package main
import (
"fmt"
"github.com/gofiber/fiber"
)
type Response_JSON struct {
Name string `json:"name"`
Surname string `json:"surname"`
}
func PostTodo(c *fiber.Ctx) error {
type request struct {
Name string `json:"name"`
Surname string `json:"surname"`
}
var body request
err := c.BodyParser(&body)
if err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Cannot parse JSON",
})
}
fmt.Println("body: ", err)
todo := Response_JSON{
Name: body.Name,
Surname: body.Surname,
}
fmt.Println("todo: ", todo)
my_request := "<div>" + todo.Name + "</div>"
my_request = my_request + "<hr><div>" + todo.Surname + "</div>"
return c.SendString(my_request)
}
主页面.html - 首页
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Proba</title>
</head>
冉冉说
紫衣仙女
随时随地看视频慕课网APP
相关分类