弹出mvc控制器的AJAX后请求中出现未知错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹出mvc控制器的AJAX后请求中出现未知错误相关的知识,希望对你有一定的参考价值。

我正在使用Spring-MVC 4.3.7并尝试使用AJAX post请求在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天,我尝试了很多不同的解决方案,但我无法让它工作。谢谢!

答案

我找到了解决问题的方法:

第一个问题是在Ajax请求中使用dataType我在这里找到解决方案和解释https://stackoverflow.com/a/6186905/10236226

第二个问题是我忘了在Modal的formData中添加userId,所以在添加这段代码之后:

id: $("#modalId").data('id')

一切正常,发送的数据保存到mysql。我希望如果未来这可以帮助别人。

以上是关于弹出mvc控制器的AJAX后请求中出现未知错误的主要内容,如果未能解决你的问题,请参考以下文章

Spring mvc ajax文件上传导致415(不支持的媒体类型)

asp.net mvc 控制器返回 json List<T> 未知错误

Ajax POST - 不推荐用于同步请求的“XMLHttpRequest.withCredentials”

asp.net mvc项目实战遇见问题及解决方式----ajax请求500错误,请求多表数据

在Asp.net核心MVC中发布Ajax的问题

ajax 将 null 发送到 MVC Api 控制器