AJSON POST

时间:2015-07-23 11:33:15

标签: jquery ajax json post csrf

我收到了400个关于AJAX Post方法的错误请求。我在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> {

}

2 个答案:

答案 0 :(得分:5)

如果您的数据中包含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 :(得分:0)

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