Не удается опубликовать объект из формы с помощью Ajax SpringMVC - PullRequest
0 голосов
/ 03 июня 2018

Как отправить объект в контроллер из формы с помощью jquery ajax?У меня есть объект User:

private String name;
private int age;

public User(String name, int age) {
    this.name = name;
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

У меня есть контроллер:

@RequestMapping(value = "/user", method = RequestMethod.POST)
public void createUser(@RequestBody User user) {
    System.out.println(user.getName());
}

Я генерирую форму с помощью jquery:

function createForm() {
    $("body").append($('<form id="form1" method="POST"></form>'));
    $("form").append('<input type="text" id="name">');
    $("form").append('<input type="text" id="age">');
    $("form").append('<input type="button" onclick="formSubmit();" value="Ok">');}

И я пытаюсь получить данные с помощью AJAXмой контроллер:

function formSubmit() {
    $.ajax({
        type : "POST",
        url : 'rest/user',
        contentType : 'application/json',
        dataType : 'json',
        data : $('#form1').serialize(),
        success : function(data) {
            doAjax();
        }
    });
}

Метод doAjax просто генерирует результаты в дб.

Но это не работает!

1 Ответ

0 голосов
/ 04 июня 2018

Причина в том, что вы установили dataType в json, но data является чистой строкой, поскольку вы используете $('#form1').serialize().

Для получения данных вам необходимо удалитьdataType в вашем ajax методе.

function formSubmit() {
    $.ajax({
        type : "POST",
        url : 'rest/user',
        contentType : 'application/json',
        //dataType : 'json',
        data : $('#form1').serialize(),
        success : function(data) {
            doAjax();
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...