这是我的 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 类中 EntryName 和 EntryBody 变量的大小写敏感性。
声明的变量应该采用驼峰式大小写,例如“entryBody”和“entryName”,相应的 setter 将类似于 getEntryBody()、setEntryBody() 等。
因此,请修改 ajax 调用中的数据属性以及类中的变量,使用相同的大小写(驼峰式大小写),即“entryBody”和“entryName”
关于javascript - AJAX 调用未将数据发送到 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934760/