415不支持的媒体类型,用于在ajax调用Spring mvc中发送json对象

时间:2015-09-19 04:46:55

标签: jquery json ajax spring-mvc

我将json对象从ajax调用发送到spring mvc控制器。

这是我发送给控制器的json对象。

 [{"id":"7","priority":"8","startTime":"2015-09-23 01:01:00.0"}]

我的ajax电话

 $.ajax({
            url : 'save.web',
            datatype:'json',
            type: "post", 
            data: "data="+JSON.stringify(jsonArray),
            success:function(data){

        }

我的控制器

 RequestMapping(value = "save.web", method = RequestMethod.POST)

public   String save( HttpServletRequest request, HttpServletResponse  
response,@RequestBody Map<String, Object> inputParameter, 
         @RequestParam("data")  String ja) {
    System.out.println("--------------Entered Save-----------");
     return "menu"
 }

我尝试使用@requestBody注释而不是@requestParam。我尝试设置标题并在RequestMapping中使用了Consumes我仍然获得POST http://localhost:8089/campaignManager/save.web 415(不支持的媒体类型)  错误。

请让我知道解决方案。我试了很多次

4 个答案:

答案 0 :(得分:3)

服务器正在发送415,因为请求中的内容媒体类型不是服务器所期望的。

将contentType添加到请求标题中,例如:contentType: "application/json"

$.ajax({
    url : 'save.web',
    datatype:'json',
    type: "post", 
    contentType: "application/json",
    data: "data="+JSON.stringify(jsonArray),
    success:function(data){
    }

答案 1 :(得分:3)

我解决了我的错误。(415错误)

我从控制器中删除@RequestBody ..

答案 2 :(得分:0)

Include jackson-binding.jar in your classpath.

<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.11</version>
</dependency>

Also set content-type="application-json" in request-header

答案 3 :(得分:0)

您收到415错误是因为返回类型而不是请求类型。 ajax不支持分块数据,这可能是您从服务中获得的默认响应之一。这是您从新版本web-api获得的默认响应之一。唯一的解决方案是使用XmlHttpRequest。