原谅我,但我不太懂英语。我使用翻译 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>
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
你看到的问题与Go(甚至Fiber)无关,这是因为你的表单会立即发布,javascript没有机会触发。
您需要添加以阻止事件“冒泡”并触发表单提交。preventDefault();
// Bind the call to the variable 'e'
mybutton.addEventListener("click", (e) => {
// Add this line!
e.preventDefault();
/* ... the rest is the same ... */
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消
