[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

相关文章
|
19小时前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
5 0
|
3天前
|
JavaScript 前端开发 数据安全/隐私保护
【好用】推荐10套后端管理系统前端模板
选择合适的模板可以大大提高开发效率,减少重复劳动,让开发者能够专注于业务逻辑的实现和功能的优化。开发者应根据项目的具体需求、团队的技术栈熟悉度以及产品的长远规划来选择最合适的模板,问题来了,这10款模板你更喜欢用哪个呢,欢迎交流。
|
3天前
|
JSON JavaScript 前端开发
前端框架vue的样式操作,以及vue提供的属性功能应用实战
前端框架vue的样式操作,以及vue提供的属性功能应用实战
|
3天前
|
JavaScript 前端开发 数据安全/隐私保护
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(二)
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(二)
|
3天前
|
JavaScript 前端开发 Python
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(一)
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(一)
|
3天前
|
存储 前端开发 JavaScript
从前端到后端:构建全栈应用的关键技术探究
在当今互联网时代,全栈开发已经成为了越来越多开发者的追求目标。本文将深入探讨从前端到后端构建全栈应用所需的关键技术,涵盖了前端框架选择、后端语言与框架、数据库设计以及前后端通信等方面,帮助读者全面了解全栈开发的必备技能和工具。
|
3天前
|
JSON 前端开发 Java
管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)
管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)
|
5天前
|
存储 缓存 NoSQL
Redis多级缓存指南:从前端到后端全方位优化!
本文探讨了现代互联网应用中,多级缓存的重要性,特别是Redis在缓存中间件的角色。多级缓存能提升数据访问速度、系统稳定性和可扩展性,减少数据库压力,并允许灵活的缓存策略。浏览器本地内存缓存和磁盘缓存分别优化了短期数据和静态资源的存储,而服务端本地内存缓存和网络内存缓存(如Redis)则提供了高速访问和分布式系统的解决方案。服务器本地磁盘缓存因I/O性能瓶颈和复杂管理而不推荐用于缓存,强调了内存和网络缓存的优越性。
24 1
|
6天前
|
SQL 前端开发 JavaScript
前端vite+vue3结合后端node+koa——实现代码模板展示平台(支持模糊搜索+分页查询)
前端vite+vue3结合后端node+koa——实现代码模板展示平台(支持模糊搜索+分页查询)
21 4
|
7天前
|
Go 开发者
Golang深入浅出之-Go语言方法与接收者:面向对象编程初探
【4月更文挑战第22天】Go语言无类和继承,但通过方法与接收者实现OOP。方法是带有接收者的特殊函数,接收者决定方法可作用于哪些类型。值接收者不会改变原始值,指针接收者则会。每个类型有相关方法集,满足接口所有方法即实现该接口。理解并正确使用这些概念能避免常见问题,写出高效代码。Go的OOP机制虽不同于传统,但具有灵活性和实用性。
15 1