[GO实战]投票系统-实现按钮将前端数据传给后端并接收

简介: [GO实战]投票系统-实现按钮将前端数据传给后端并接收

问题描述

先看问题描述:以投票系统为例子,我使用gin框架自带的context.html()数据库数据渲染到页面上,然后想给数据添加投票按钮,当用户点击后,将该form内的相关数据传给后端,后端拿到数据进行增删改查然后再渲染到页面上,身为后端选手,前端基本按钮对我来说很难了,在掉入很多坑之后,我终于把相关功能实现了,下面是我的实现过程,希望对您有所帮助!


解决步骤

使用gin框架自带的context.html()数据库数据渲染到页面上,如下图:

d32bf037015d4644baa6b129031d5c85.png


前端实现:(这是我最终修改后的代码),注意td标签是不能获取值的,需要写成tickName那一行,即内嵌一个input来协助数据,这一点卡了我很久!!!

3cfd2485bc1546e4917e8bc4457579e0.png


按钮功能实现: 通过js实现的

因为我有很多个表单,所以通过form表单的id来确定用户点击的按钮属于哪一个

<script type="text/javascript">
  function submitForm(formId) {
    // 获取所属表单的数据
    var form = document.getElementById(formId)
    var formData = new FormData(form);
    var xhr = new XMLHttpRequest()
    // console.log(formData)
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4 && xhr.status === 200) {
        // 处理响应数据
        alert(xhr.responseText);
      }
    };
    xhr.open('POST', '/submit', true);
    xhr.send(formData);
  }
</script>


后端通过context.PostForm来获取数据,具体实现如下:

afa8cf74b40e438b8e2a7beba2b86681.png

func Submit(c *gin.Context) {
  tickName := c.PostForm("tickName")
  fmt.Println(tickName)
  c.JSON(http.StatusOK, gin.H{"message": "success"})
  //err1 := global.DB.Where("tickkind=?", ticketkind).Where("ticketName=?", ticketname).First(&tick).Update("ticket_num", tick.TicketNum+1).Error
  //if err1 != nil {
  //  //添加失败
  //  log.Println("数据添加失败")
  //
  //} else {
  //  log.Println("渲染数据成功")
  //}
}

67ee474c922f4b3380b3ac385f9855e7.gif

相关文章
|
7天前
|
缓存 前端开发 搜索推荐
前端性能优化实战:提升网页加载速度
前端性能优化实战:提升网页加载速度
|
15天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
31 2
|
16天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
27 2
|
21天前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
18 1
|
22天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
13天前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
35 0
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
3天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
11 2
|
3天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2
|
8天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
30 7