【发布时间】:2014-07-02 15:34:27
【问题描述】:
相关JS:
$.ajax({
type : "POST",
contentType : 'application/json; charset=utf-8',
dataType : 'json',
url : "post",
data : JSON.stringify(person),
success : function() {
},
error : function() {
alert("Error");
}
});
相关控制器代码:
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/post", method = RequestMethod.POST)
public void posted(@RequestBody Person person) {
System.out.println("Post");
System.out.println(person.toString());
}
问题:
发布后,控制器的行为就像一切正常。我的打印语句触发并且 person.toString() 产生了预期的结果。但是,我的 ajax 调用失败,提示“错误”,我不知道为什么,因为除此之外,一切正常。
我尝试使用 Postman 手动发布 JSON,我收到“415 Unsupported Media Type”的响应,经过一番挖掘,我仍然不知道如何处理这个错误,所以我的 success()函数触发。有什么想法吗?
【问题讨论】:
-
你的整个方法不应该被调用。你能展示你的 Spring MVC 配置吗?您使用的是哪个 Spring 版本?
-
或者更确切地说,您应该得到 406,而不是 415。
-
删除我的 ajax 调用中的 dataType 属性确实修复了它。你为什么说我的整个方法不应该被调用?我在 Spring 4.0.5
-
dataType 需要来自服务器的 json 响应,因为您没有响应任何响应。
-
415 表示服务器期望的内容与您发送的内容不同。它甚至在创建它需要传递给方法的
Person对象之前就会失败。
标签: java javascript ajax json spring-mvc