当前位置: 首页 > news >正文

axios模拟表单提交

axios默认是application/json方式提交,controller接收的时候必须以@RequestBody的方式接收,有时候不太方便。如果axios以application/x-www-form-urlencoded方式提交数据,controller接收的时候只要保证名字应对类型正确即可。

前端代码:

  <el-dialogv-model="dialogVisible" width="30%"><el-form :model="formData" label-position="top"><el-form-item label="用户名"><el-input v-model="formData.username" placeholder="用户名..."/></el-form-item><el-form-item label="密码"><el-input type="password" v-model="formData.password" placeholder="密码..."/></el-form-item></el-form><template v-slot:header><span>登录窗口</span></template><template #footer><span class="dialog-footer"><el-button type="primary" @click="formConfirm">登录</el-button></span></template></el-dialog>

这是利用Element-Plus模态框提供的三个SLOT(footer,header和default)嵌套了一个Element-Plus的表单。点击登录按钮时,将双向绑定的formData提交到controller。

点击登录按钮时出发的formConfirm方法:

const formConfirm=function (){this.dialogVisible=false;axios.post(url.login,formData,{headers: {'Content-Type': 'application/x-www-form-urlencoded'}}).then(resp=>{const data = resp.data;this.formData.username="";this.formData.password="";console.log(data);}).catch(err=>{console.log("login error: ",err);});
}

核心就是使用了三参数的post函数:

post(url,data,config)

config里面设定发起post请求时的额外设置,header是设置(config)的一部分,而header中需要显式的设置content-type为application/x-www-form-urlencoded,这样对于服务器来说这就是一个表单提交数据的请求。

后端controller:

 @PostMapping("/login")public Map<String,String> login(String username, String password){log.info("username--->{}",username);log.info("password--->{}",password);Map<String,String> resp =   new HashMap<>();resp.put("message","wrong name or password");resp.put("token",null);if("abc".equals(username) && "123456".equals(password)){String token = UUID.randomUUID().toString();stringRedisTemplate.opsForValue().set("token",token,3600, TimeUnit.SECONDS);resp.put("message","success");resp.put("token",token);return resp;}return resp;}

如果是表单提交的数据,那么handler接收的方式不用添加任何额外的注解,利用名称对应,类型正确的方式就可以接收表单数据了。

http://www.lryc.cn/news/145683.html

相关文章:

  • 智安网络|探索物联网架构:构建连接物体与数字世界的桥梁
  • 胡歌深夜发文:我对不起好多人
  • C++二级题
  • NetApp AFF A900:适用于数据中心的超级产品
  • 入海排污口水质自动监测系统,助力把好入河入海“闸门”
  • AUTOSAR知识点 之 ECUM (一):基础知识梳理(概念部分)
  • leetcode分类刷题:哈希表(Hash Table)(二、数组交集问题)
  • [Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)
  • 范德波尔方程详细介绍与Python实现(附说明)
  • 常用的GPT插件
  • 智慧校园用电安全解决方案
  • 【教程】DGL中的子图分区函数partition_graph讲解
  • 关于layui table回显以及选择下一页时记住上一页数据的问题
  • kafka消息系统实战
  • Kafka3.0.0版本——Leader故障处理细节原理
  • BI系统框架模型
  • 双向交错CCM图腾柱无桥单相PFC学习仿真与实现(3)硬件功能实现
  • 微软用 18 万行 Rust 重写了 Windows 内核
  • word 调整列表缩进
  • nginx学习
  • python+TensorFlow实现人脸识别智能小程序的项目(包含TensorFlow版本与Pytorch版本)(一)
  • ChatGPT怎么用于政府和公共服务?
  • dvwa文件上传通关及代码分析
  • 数字孪生:重塑政府决策与公共服务
  • Leetcode:【448. 找到所有数组中消失的数字】题解
  • 2023年中,量子计算产业现状——
  • 微信小程序智慧流调微信小程序设计与实现
  • 分布式集群框架——有关zookeeper的面试考点
  • Spring Cloud Gateway的快速使用
  • VSCode-C++环境配置+Cmake