如何使用spring mvc在jQuery post函数中配置http头

时间:2014-03-31 10:50:11

标签: javascript jquery spring spring-mvc

我创建了一个页面并向服务器提交了一个post请求,jquery代码就像这样

jquery代码:

$("#button").click(function() {

    var book = {
        name: "book123",
        isbn: "123456"
    };

    $.post("book/add", book, function(data) {
        console.debug(data);
    });

});

Spring控制器代码:

@RequestMapping(value = "/add",method = RequestMethod.POST)
public @ResponseBody String addBook(
        @RequestBody Book book, HttpServletResponse response) throws Exception {

    book.setRanking(DEFAULT_RANKING);
    Book returnbook = bookService.createBook(book);

    return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(returnbook);
}

但它有错误,在firebug中,我收到此错误代码:

  

NetworkError:415不支持的媒体类型 - / book / add

请求标头信息是这样的:

  

接受 / 接受编码gzip,deflate

     

Accept-Language en; q = 0.8,en-us; q = 0.5

     

内容长度24

     

Content-Type application / x-www-form-urlencoded;字符集= UTF-8

     

DNT 1

     

User-Agent Mozilla / 5.0(Windows NT 6.1; WOW64; rv:24.0)Gecko / 20100101   火狐/ 24.0

     

X-Requested-With XMLHttpRequest

我认为内容类型不正确,如粗体。如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery的ajax函数而不是post,您可以在其中指定类型。 要查看如何使用它,请查看this SO帖子 最好将@RequestMapping上的consumes变量设置为“application / json”