Неизвестная ошибка в пост-запросе AJAX к контроллеру spring-mvc - PullRequest
0 голосов
/ 28 января 2019

Я использую Spring-MVC 4.3.7 и пытаюсь отредактировать данные пользователя в JSP с помощью пост-запроса AJAX и сохранить результат в 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 дня с этой ошибкой, и я пробовал много разных решений, но я не могу заставить его работать.Спасибо!

1 Ответ

0 голосов
/ 28 января 2019

Я нашел решение для моей проблемы:

Первая проблема была в Ajax-запросе с dataType. Я нашел решение и объяснение здесь https://stackoverflow.com/a/6186905/10236226

Вторая проблема - я забыл добавить userId в formData fromМодально, поэтому после добавления этого кода:

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

все работает нормально и отправленные данные сохраняются в mysql.Я надеюсь, что это может помочь кому-то, если в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...