javascript - AJAX 调用未将数据发送到 Controller 方法

标签 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('');
    });
});

这是我 Controller 中的内容:

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

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

有什么想法吗?

最佳答案

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

您能否检查一下 BlogEntry 类中 EntryNameEntryBody 变量的大小写敏感性。

声明的变量应该采用驼峰式大小写,例如“entryBody”和“entryName”,相应的 setter 将类似于 getEntryBody()、setEntryBody() 等。

因此,请修改 ajax 调用中的数据属性以及类中的变量,使用相同的大小写(驼峰式大小写),即“entryBody”和“entryName

关于javascript - AJAX 调用未将数据发送到 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934760/

相关文章:

javascript - 如何在用户脚本中集成第三方 JavaScript 库

javascript - InnerHTML 附加而不是替换

javascript - 显示特定时间段的通知栏

java - 无法响应 Java 中的非本地套接字

javascript - 识别 Javascript 中的 html 数据属性

javascript - 无法读取未定义的属性 'info'

javascript - 将两个音频缓冲区叠加到一个缓冲区源中

java - 计算并显示耗时的百分比

java - 配置属性注释问题

javascript - jquery在 'li'中找到 'ul'个项目的数量并应用一些数学来计算 'ul'的高度