这个地方真的想爆粗口,浪费了很长时间,搞了两个晚上,一直不解,代码没有任何问题为什么回调函数success不执行,一直在执行error。看了很多解决方法,就是不行,无语了。。。
后来莫名其妙的解决了
1.如果不走success,而是error,看下发送的数据是否是标砖的json格式
2.看下返回的json数据是否含有不是json类型的
导入依赖:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
1.先写一个User类:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String username;
private String password;
private int age;
}
2.写一个后台,响应json数据:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user) {
//客户端发送ajax请求,传的是json数据,后端把json字符串封装到user对象中
System.out.println(user);
//做响应
user.setUsername("haha");
//使用@ResponseBody注解将User对象转换为一个Json字符串
return user;
}
}
3.写一个前端页面response.jsp,发送Ajax请求
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
$(function(){
// 绑定点击事件
$("#btn").click(function(){
$.ajax({
url:"user/testAjax",
contentType:"application/json;charset=UTF-8",
data:'{"username":"aa","password":"123","age":100}',
dataType:"json",
type:"post",
success:function(data){
alert(data);
alert(data.username);
}
});
});
});
</script>
</head>
<body>
<button id="btn">发送Ajax请求</button>
</body>
</html>