Spring Rest Controller不支持的ajax调用媒体类型

时间:2016-11-14 11:48:14

标签: jquery json ajax spring spring-mvc

我在弹簧控制器上使用简单的jquery ajax并返回错误

error: "Unsupported Media Type"
exception: "org.springframework.web.HttpMediaTypeNotSupportedException"
message: "Content type 'applicatin/json;charset=UTF-8' not supported"

但是当我使用邮递员发送请求时它可以正常工作。

所以这是我的控制器:

@RequestMapping(method=RequestMethod.POST, value="/bbl/submit")
    @ResponseBody
    public String saveEmail(@RequestBody BblUserSms model) {
    return "hello";
}

这是ajax:

$('#btnSubmit').on('click', function() {
    $.ajax({
        url: '/bbl/submit',
        method: 'POST',
        contentType: 'application/json',
        data: {
            phoneNumber: $('#phoneNumber').val();,
            email: $('#email').val(),
        },
        contentType: 'applicatin/json',
        success: function(res) {
            console.log(res);
        },
        error: function(res) {
            console.log(res);
        }
    })
});

当我发送邮递员请求时,我将内容类型设置为头文件中的application / json,然后就身体而言,我只使用原始类型,如下所示:

{ "phoneNumber": "123456789", "email": "something@example.com" }

它只是有效。控制器中的模型是从json创建的,但是当我通过ajax发送时,它只是没有到达控制器。

这可能是什么问题?

2 个答案:

答案 0 :(得分:1)

您在请求中有两个contentType属性,第二个属性有一个错字,这会引起问题。 ;对象中val()之后的data也会引起问题。试试这个:

$('#btnSubmit').on('click', function() {
  $.ajax({
    url: '/bbl/submit',
    method: 'POST',
    contentType: 'application/json',
    data: {
      phoneNumber: $('#phoneNumber').val(),
      email: $('#email').val(),
    },
    success: function(res) {
      console.log(res);
    },
    error: function(res) {
      console.log(res);
    }
  })
});

答案 1 :(得分:0)

检查模型是否有未在客户端json数据中使用的实体,然后在所有字段上方使用@JsonIgnore