ajax – POST JSON失败,415不支持的媒体类型,Spring 3 mvc

我试图发送一个POST请求到一个servlet。请求通过jQuery以这种方式发送:
var productCategory = new Object();
productCategory.idProductCategory = 1;
productCategory.description = "Descrizione2";
newCategory(productCategory);

其中newCategory是

function newCategory(productCategory)
{
  $.postJSON("ajax/newproductcategory",productCategory,function(
      idProductCategory)
  {
    console.debug("Inserted: " + idProductCategory);
  });
}

和postJSON是

$.postJSON = function(url,data,callback) {
    return jQuery.ajax({
    'type': 'POST','url': url,'contentType': 'application/json','data': JSON.stringify(data),'dataType': 'json','success': callback
    });
};

使用firebug我看到JSON正确发送:

{"idProductCategory":1,"description":"Descrizione2"}

但我得到415不支持媒体类型。 Spring mvc控制器有签名

@RequestMapping(value = "/ajax/newproductcategory",method = RequestMethod.POST)
public @ResponseBody
Integer newProductCategory(HttpServletRequest request,@RequestBody ProductCategory productCategory)

几天前它工作,现在不是。如果需要,我会显示更多的代码
谢谢

我之前发生过与Spring @ResponseBody,这是因为没有接受头与请求一起发送。接受头可能是一个痛苦与jQuery设置,但这对我工作 source
$.postJSON = function(url,callback) {
    return jQuery.ajax({
    headers: { 
        'Accept': 'application/json','Content-Type': 'application/json' 
    },'type': 'POST','success': callback
    });
};

@RequestBody使用Content-Type头来确定请求中客户端发送的数据是什么格式。 accept头由@ResponseBody用于确定将数据发送回响应中的客户端的格式。这就是为什么你需要两个标题

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...