【发布时间】:2015-10-13 16:27:41
【问题描述】:
我收到 AJAX Post 方法的 400 Bad Request。我在后端使用 Spring Data Rest Services。下面是我在前端的 JS 代码
var url = "/udb/data/SecurityRoleGroup",
groupData = {id:"",name:"",accesslevel:"",roles:[]};
groupData.id = groupId.val();
groupData.name = groupName.val();
groupData.accesslevel = groupDescription.val();
groupData.roles = multiselect_to.val();
$.ajax(url, { type: 'POST',
dataType: 'json',
headers: {
'X-CSRF-Token': _csrfGroup.val(),
'Content-Type' : 'application/json'
},
data: JSON.stringify(groupData),
contentType: 'application/json',
})
.done(function(results) {
showMessage.html("Group details are saved successfully.");
showMessage.removeClass().addClass("alert alert-success").show();
})
.fail( function(xhr, textStatus, errorThrown){
showMessage.html("Error : Rolegroup AJAX request failed! Please try again.");
showMessage.removeClass().addClass("alert alert-danger").show();
});
虽然我正在序列化 JSON 数据。我仍然收到 400 Bad Request 错误。如果某些代码在后端中断或发送到服务器的请求出现问题,是否会出现此错误?
JAVA 实现
@RepositoryRestResource(collectionResourceRel = "SecurityRoleGroup", path = "SecurityRoleGroup")
public interface SecurityRoleGroupRepository extends PagingAndSortingRepository<SecurityRoleGroup, Long> {
}
【问题讨论】:
-
控制台的响应错误信息是什么?
-
{"cause":null,"message":"无法处理托管/反向引用'defaultReference':类型:org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module 类型的值反序列化器$UriStringDeserializer 不支持它们"}
-
您的服务器无法反序列化您的请求参数。基本上,您的请求无法与服务器已经知道的任何内容相匹配。
-
我认为您需要以所需的服务器格式对您的请求进行编码。或者请求格式不正确。还要检查方法(POST、GET、PUT)是否符合预期。
-
你不需要使用内容类型头,因为你使用了类型:json
标签: jquery ajax json post csrf