JSON在AJAX POST上Stringify 400错误请求

问题描述 投票:5回答:2

我收到了关于AJAX Post方法的400 Bad Request。我在Backend使用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> {

}
jquery ajax json post csrf
2个回答
5
投票

如果数据中有特殊字符,则需要在发送到服务器之前对数据进行编码。试试这个

$.ajax(url, { type: 'POST',
                dataType: 'json',
                headers: {
                    'X-CSRF-Token': _csrfGroup.val(),
                    'Content-Type' : 'application/json'
                },
                data: encodeURI(JSON.stringify(groupData)),
                contentType: 'application/json',
            })

0
投票

1.为什么你需要发送数据转换字符串你可以按原样发送数据2.你不需要将内容类型作为application / json,因为你在数据类型3中定义为json。如果你在这里使用post方法,请确保你在服务器端处理相同的事情

© www.soinside.com 2019 - 2024. All rights reserved.