【发布时间】:2019-09-23 04:01:37
【问题描述】:
我正在使用$.ajax 做一个发布方法,就是这个
$(function(){
$("#postMembers").click(function(){
let member ={
firstName: "khookina",
lastName : "khooak",
age:1,
sex:"female",
duty:"undefined",
dailyJeton:2
}
$.ajax({
type: "post",
url: "http://localhost:8080/RCP2/members",
data: member,
dataType: "application/json",
success: function (response) {
alert("success");
},
error: function(error){
alert("error");
}
});
});
我的休息控制器就是这个
@PostMapping(consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public String createMembers(Member member) {
if (member.hasError()) {
throw new CreatePersonException("All the fields must be filled properly in order to create a new member.");
}
if (personDao.createMember(member)) {
return "Member: " + member.getFirstName() + " " + member.getLastName() + " successfully created.";
}
return "couldn't create member, please try again later.";
}
我在执行这个 ajax post 方法的网页中有一个创建成员按钮,当我按下它时,一切正常,成员信息被发送到其余控制器,它被创建(100% 工作)并返回 @987654324 ajax post方法的@和error: function(error)被调用
有什么问题?
这是我使用 ajax 和 javascript 的第一天,我真的不明白发生了什么。
提前致谢
P.S 我已经尝试更改数据类型 text json、json 以及类似问题中建议的其他一些,但它们对我不起作用,所以我决定自己提出一个问题。
【问题讨论】:
-
“成员被创建”是什么意思?您在浏览器的“网络”选项卡中看到了什么? Spring 应用程序是否在控制台上显示任何内容? (另请注意:抛出异常是处理错误的好方法;返回带有人类可读错误消息的随机字符串不是。您可以在
Member上使用@Valid让 Spring 为您进行检查。在 Java 中,方法应该以小写字母 (createMember) 开头,并且您应该研究 Spring Data,它将自动生成存储库。对于 POST,您可能希望返回带有Location标头的ResponseEntity。) -
@chrylis 感谢您的评论。对于 CreateMethod 的命名,这只是我没有注意到的一个错误,并且“成员被创建”意味着一切正常,正如您可以通过方法的名称猜测目标是创建一个成员。我会尝试返回一个 ResponseEntity 看看会发生什么。
-
@chrylis 我更改了我的休息控制器以返回 ResponseEntity 但仍然得到相同的结果。
标签: java jquery ajax spring-mvc spring-restcontroller