前端Ajax与SpringBoot交互时传递参数有如下几种方式。
1. 传输JSON对象
前端
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"/><!-- 省略不相关的一万行代码.... --><script src="https://code.jquery.com/jquery-3.5.1.min.js"></script></head><body><div class="container"><div class="jumbotron mt-2 p-4"><form action="/sign" method="post"><p> <Input id="username" class="form-control" name="username" placeholder="请输入用户名" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="hidden" id="lessonId" name="lessonId" style="width: 95%;"/> </p><div id="msg"></div><p> <Button id="login" type="submit" class="btn btn-login" style="width: 95%; background-color:#03ceb9; border-radius: 4px;"> 登录 </Button> </p></form></div></div></body><script>$(document).ready(function(){$("#login").click(function(){event.preventDefault();// 请求参数(JSON对象)var params = { username: $('#username').val(), password: $('#password').val(), lessonId: $('#lessonId').val() };console.log("参数:",params);$.ajax({// 请求方式type : "POST",dataType: 'JSON',// 请求的媒体类型contentType: "application/json;charset=UTF-8",// 请求地址url : "/sign",// 数据,json对象data : JSON.stringify(params),// 请求成功success : function(result) {$("#msg").text(result.msg);},// 请求失败,包含具体的错误信息error : function(e){$("#msg").text(e.responseText);}});});});</script></html>
后端 ```java // 方法1:用Map对象接收JSON对象 @PostMapping(value=”/sign”,produces = {“application/json;charset=UTF-8”}) @ResponseBody public String Sign(@RequestBody Map
user){ String str; // 省略不相关的一万行代码…. return “{\”msg\”:\””+str+”\”}”; }
// 方法2:用Pojo对象接收JSON对象 @PostMapping(value=”/sign”,produces = {“application/json;charset=UTF-8”}) @ResponseBody public String Sign(@RequestBody User user){ String str; // 省略不相关的一万行代码…. return “{\”msg\”:\””+str+”\”}”; }
<a name="uKOut"></a># 2. 传输JSON字符串- **前端**```html<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"/><!-- 省略不相关的一万行代码.... --><script src="https://code.jquery.com/jquery-3.5.1.min.js"></script></head><body><div class="container"><div class="jumbotron mt-2 p-4"><form action="/sign" method="post"><p> <Input id="username" class="form-control" name="username" placeholder="请输入用户名" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="hidden" id="lessonId" name="lessonId" style="width: 95%;"/> </p><div id="msg"></div><p> <Button id="login" type="submit" class="btn btn-login" style="width: 95%; background-color:#03ceb9; border-radius: 4px;"> 登录 </Button> </p></form></div></div></body><script>$(document).ready(function(){$("#login").click(function(){event.preventDefault();// 请求参数(JSON对象)var params = { "username": $('#username').val(), "password": $('#password').val(), "lessonId": $('#lessonId').val() };console.log("参数:",params);$.ajax({// 请求方式type : "POST",dataType: 'JSON',// 请求地址url : "/sign",// 数据,json字符串data : params,// 请求成功success : function(result) {$("#msg").text(result.msg);},// 请求失败,包含具体的错误信息error : function(e){$("#msg").text(e.responseText);}});});});</script></html>
后端
@PostMapping(value="/sign",produces = {"application/json;charset=UTF-8"})@ResponseBodypublic String Sign(@RequestParam("username") String username,@RequestParam("password") String password,@RequestParam("lessonId")String lessonId){String str;// 省略不相关的一万行代码....return "{\"msg\":\""+str+"\"}";}
3. 传输JSON数组
前端
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"/><!-- 省略不相关的一万行代码.... --><script src="https://code.jquery.com/jquery-3.5.1.min.js"></script></head><body><div class="container"><div class="jumbotron mt-2 p-4"><form action="/sign" method="post"><p> <Input id="username" class="form-control" name="username" placeholder="请输入用户名" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" style="width: 95%; border-radius: 4px;"/> </p><p> <Input type="hidden" id="lessonId" name="lessonId" style="width: 95%;"/> </p><div id="msg"></div><p> <Button id="login" type="submit" class="btn btn-login" style="width: 95%; background-color:#03ceb9; border-radius: 4px;"> 登录 </Button> </p></form></div></div></body><script>$(document).ready(function(){$("#login").click(function(){event.preventDefault();// 请求参数(JSON对象)var params = [{ "username": $('#username').val(), "password": $('#password').val(), "lessonId": $('#lessonId').val() }];console.log("参数:",params);$.ajax({// 请求方式type : "POST",dataType: 'JSON',// 请求的媒体类型contentType: "application/json;charset=UTF-8",// 请求地址url : "/sign",// 数据,json数组data : JSON.stringify(params),// 请求成功success : function(result) {$("#msg").text(result.msg);},// 请求失败,包含具体的错误信息error : function(e){$("#msg").text(e.responseText);}});});});</script></html>
后端
@PostMapping(value="/sign",produces = {"application/json;charset=UTF-8"})@ResponseBodypublic String Sign(@RequestBody List<User> user){String str;// 省略不相关的一万行代码....return "{\"msg\":\""+str+"\"}";}
