前端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"})
@ResponseBody
public 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"})
@ResponseBody
public String Sign(@RequestBody List<User> user){
String str;
// 省略不相关的一万行代码....
return "{\"msg\":\""+str+"\"}";
}