AJAX调用没有向控制器方法

时间:2016-08-13 16:31:07

标签: javascript java jquery ajax spring-mvc

这就是我在JavaScript文件中的内容:

$(document).ready(function () {
$('#add-be-submit').click(function (event) {
    event.preventDefault();

    $.ajax({
        type: 'POST',
        url: '/snapdragon/blog/new',
        data: JSON.stringify({
            EntryName: $('#add-be-title').val(),
            EntryBody: CKEDITOR.instances.addBeBody.getData()
        }),
        contentType: 'application/json; charset=utf-8',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        dataType: 'json'
    }).success(function (data, status) {
        $('#add-be-title').val('');
        CKEDITOR.instances.addBeBody.getData('');
    });
});

这就是我在控制器中的内容:

/* ---------- ADD BLOG ENTRTY ---------- */
@RequestMapping(value = "/new", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void addBlogEntry(@Valid @RequestBody BlogEntry entry) {
    dao.addBlogEntry(entry);
}

控制器本身的RequestMapping设置为“/ blog”。我找不到问题。我在“dao.addBlogEntry(entry)”上设置了一个断点,发现传入的对象的EntryName和EntryBody为空值。但是当我在JavaScript控制台中检查“$('#add-be-title')。val()”和“CKEDITOR.instances.addBeBody.getData()”的值时,它们具有正确的值。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

区分大小写在Ajax中也很重要。

请查看BlogEntry类中 EntryName EntryBody 变量的区分大小写。

声明的变量应该是像“entryBody”和“entryName”这样的驼峰,相应的setter就像getEntryBody(),setEntryBody()等。

因此,请修改您的ajax调用中的数据属性以及类中的变量,使用相同的案例(Camel Case),即“ entryBody ”和“ entryName