Jquery JSON Stringify 400对AJAX POST的错误请求

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();

我收到400个关于AJAX Post方法的错误请求。我在后端使用SpringDataREST服务。下面是我在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个错误请求。如果某些代码在后端中断或发送到服务器的请求出现问题,是否会出现此错误

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服务器。这样做成功了)。