Jquery JSON Stringify 400对AJAX POST的错误请求
我收到400个关于AJAX Post方法的错误请求。我在后端使用SpringDataREST服务。下面是我在JS前端的代码Jquery JSON Stringify 400对AJAX POST的错误请求,jquery,ajax,json,post,csrf,Jquery,Ajax,Json,Post,Csrf,我收到400个关于AJAX Post方法的错误请求。我在后端使用SpringDataREST服务。下面是我在JS前端的代码 var url = "/udb/data/SecurityRoleGroup", groupData = {id:"",name:"",accesslevel:"",roles:[]}; groupData.id = groupId.val(); groupData.name = groupName.val();
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个错误请求。如果某些代码在后端中断或发送到服务器的请求出现问题,是否会出现此错误
JAVA实现
@RepositoryRestResource(collectionResourceRel = "SecurityRoleGroup", path = "SecurityRoleGroup")
public interface SecurityRoleGroupRepository extends PagingAndSortingRepository<SecurityRoleGroup, Long> {
}
@RepositoryRestResource(collectionResourceRel=“SecurityRoleGroup”,path=“SecurityRoleGroup”)
公共接口SecurityGroupRepository扩展了分页和排序存储库{
}
如果数据中包含spl字符,则需要在发送到服务器之前对数据进行编码。试试这个
$.ajax(url, { type: 'POST',
dataType: 'json',
headers: {
'X-CSRF-Token': _csrfGroup.val(),
'Content-Type' : 'application/json'
},
data: encodeURI(JSON.stringify(groupData)),
contentType: 'application/json',
})
1.为什么需要发送数据转换字符串您可以按原样发送数据 2.您不需要将内容类型设置为application/json,因为您在数据类型中定义为json
3.如果在此处使用post方法,请确保在服务器端处理相同的问题控制台中的响应错误消息是什么?{“原因”:null,“消息”:“无法处理托管/反向引用'defaultReference':类型:org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$UriStringDeserializer不支持它们”}服务器无法反序列化请求参数。基本上,您的请求无法与服务器已知的任何内容匹配。我认为您需要将请求编码为所需的服务器格式。或者请求格式不正确。还要检查方法(POST、GET、PUT)在任何预期的情况下都是正确的。您不需要使用内容类型标头,因为您使用了类型:jsonI将使用encodeURI组件而不是encodeURI。“encodeURI本身无法形成正确的HTTP GET和POST请求,例如对于XMLHTTPRequests,因为“&”、“+”和“=”未编码,在GET和POST请求中被视为特殊字符。然而,encodeURIComponent对这些字符进行了编码。“为什么这样做?我们花了一周时间解决这个问题-谢谢。(从一个角度的POST请求到一个JAVA服务器。这样做成功了)。