无法通过Ajax SpringMVC从表单发布对象

时间:2018-06-03 15:27:29

标签: java jquery ajax spring-mvc spring-boot

如何通过jquery ajax从表单中将对象发布到控制器? 我有对象用户:

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只生成db的结果。

但它不起作用!

1 个答案:

答案 0 :(得分:0)

原因是您已将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();
        }
    });
}