为了账号安全,请及时绑定邮箱和手机立即绑定

光纤 Web 框架无法发送 ajax 请求

光纤 Web 框架无法发送 ajax 请求

Go
冉冉说 2022-08-24 18:49:55
原谅我,但我不太懂英语。我使用翻译 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 ... */


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号