jquery - 对 spring-mvc 控制器的 AJAX 发布请求中的未知错误
问题描述
我正在使用 Spring-MVC 4.3.7 并尝试使用 AJAX 发布请求在 JSP 中编辑用户数据并将结果保存在 mySql 中。该表单处于 Bootstrap 模式。
我可以将表单数据发送到 Spring 控制器(更改的用户数据打印在服务器日志中)但 AJAX 总是显示错误警报并且控制器不会更新 mySql 中的用户数据。
<form id="editForm">
<div class="form-group">
<label for="editName">Name</label>
<input type="text" class="form-control" name="editName" id="editName" value="">
</div>
<div class="form-group">
<label for="editUsername">Username</label>
<input type="text" class="form-control" name="editUsername" id="editUsername" value="">
</div>
<div class="form-group">
<label for="editRole">Role</label>
<select id="editRole">
<option value="0">User</option>
<option value="1">Admin</option>
</select>
</div>
<div class="modal-footer">
<div class="btn-group btn-group-justified" role="group" aria-label="group button">
<div class="btn-group" role="group">
<button type="button" class="btn btn-
danger" data-dismiss="modal" role="button">Close</button>
</div>
<div class="btn-group" role="group">
<button type="submit" class="btn btn-
success btn-hover-green">Save</button>
</div>
</div>
</div>
</form>
$("#editForm").submit(function(event) {
// Prevent the form from submitting via the browser.
event.preventDefault();
// PREPARE FORM DATA
var formData = {
name: $("#editName").val(),
username: $("#editUsername").val(),
role: $("#editRole").val()
};
var dataJson = JSON.stringify(formData);
$.ajax({
type: "POST",
contentType: "application/json",
url: "../admin/editUser",
data: dataJson,
dataType: 'json',
success: function(data) {
alert("Success");
console.log(data);
},
error: function(e) {
alert("Error!");
console.log(e);
}
});
});
@Autowired
UserService userService;
@RequestMapping(value = "admin/editUser", method = RequestMethod.POST)
public @ResponseBody void handleEditUser(@RequestBody User cmd) {
try {
System.out.println(cmd.getName());
System.out.println(cmd + "done");
userService.updateUser(cmd);
} catch (DuplicateKeyException ex) {
ex.printStackTrace();
}
}
我测试了这个updateUser
方法,它工作正常。
我希望有人可以帮助我解决我的问题并解释我的问题,我在这个错误上停留了 2 天,我尝试了许多不同的解决方案,但我无法让它工作。谢谢!
解决方案
我找到了解决问题的方法:
第一个问题是在使用 dataType 的 Ajax 请求中,我在这里找到了解决方案和解释 https://stackoverflow.com/a/6186905/10236226
第二个问题是我忘记在 Modal 的 formData 中添加 userId,所以添加此代码后:
id: $("#modalId").data('id')
一切正常,发送的数据保存到mysql。如果将来,我希望这可以帮助某人。
推荐阅读
- typescript - Vue2/3 - 在组件之间共享功能。该函数有一个业务逻辑,如调用 API、突变
- javascript - 我需要 xpath 的解决方案
- python - 在字典中查找具有最多唯一值的键
- r - 如何让这个函数的输出打印到 R 中的不同行上?
- java - 尝试从我的 Java 服务器获取数据时,为什么我的 React 应用程序中的 fetch() 不起作用?
- javascript - SPFX Web 部件添加文本并在单击按钮时在弹出窗口中显示它
- javascript - 在 javascript 中使用变量是如何工作的?
- ios - SwiftUI - 在按钮单击时添加一行多个文本字段/视图
- python - dotenv 不会被 python 导入
- firebase - 用户在 Flutter Firebase 身份验证中没有被记住