【问题标题】:Unsupported Media Type Error in AJAX-Spring MVCAJAX-Spring MVC 中不支持的媒体类型错误
【发布时间】:2014-01-22 09:36:19
【问题描述】:

我正在尝试将字符串传递给使用 Ajax Stringify 的控制器,但出现此错误 415(不支持的媒体类型) 我的 Ajax 调用:

$.ajax({
     type: "POST",
     contentType : 'application/json; charset=utf-8',
     dataType : 'json',
     url: "addSample",
     data: JSON.stringify(search), // Note it is important
     cache : false,
     beforeSend : function(xhr) {
        xhr.setRequestHeader("Accept", "application/json");
        xhr.setRequestHeader("Content-Type", "application/json");
     },
     success : function(response) {
         console.log("Success: "+ response);            
     },
     error : function(xhr) {
         console.log("Sorry, there was a problem! " + xhr.responseText);
     },
     complete : function() {
         console.log("Request complete");
     }
});

传递字符串:

var search = {
     " name" : "aa",
      "sname": "bb",
      "dname" : "cc"
}

我的弹簧控制器功能:

@RequestMapping(headers={"Accept=application/json"},value = "addSample", method = RequestMethod.POST)
    public @ResponseBody
    String addData(HttpServletRequest request,@RequestBody final DemoDTO demoDTO)
    {
        return  "{\"value\":\"true\"}";
    }

我的 DTO:

public class DemoDTO implements Serializable{
    private String name;
    private String sname;
    private String dname;
  //getter setter
}

请帮我解决这个问题....

【问题讨论】:

  • 请求 addCourseStructure 的方法在哪里,您的方法适用于 value = "addSample" 请求
  • 对不起,我的错误,输入错误。但在我的代码中它是正确的。
  • 您能否确认您的项目中有jackson-corejackson-mapper jar?这些负责自动将 JSON 转换为 DTO,反之亦然。如果您使用的是 Maven,则这些应定义为 pom.xml 中的依赖项
  • @VSN 请更新代码
  • @AshishJagtap 我已经更新了代码。

标签: java jquery ajax spring spring-mvc


【解决方案1】:

尝试替换这个:

beforeSend : function(xhr) {
    xhr.setRequestHeader("Accept", "application/json");
    xhr.setRequestHeader("Content-Type", "application/json");
 },

有了这个:

headers: { 
    'Accept': 'application/json',
    'Content-Type': 'application/json' 
},

另外,从 spring 控制器中删除 headers={"Accept=application/json"},如下所示:

@RequestMapping(value = "addSample", method = RequestMethod.POST)
public @ResponseBody
String addData(HttpServletRequest request,@RequestBody DemoDTO demoDTO)
{
    return  "{\"value\":\"true\"}";
}

【讨论】:

  • 终于我得到了数据,我已经添加了 jackson-mapper-asl-1.9.13.jar 并且它工作正常,谢谢大家帮助我............
猜你喜欢
  • 2014-02-06
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 2013-08-08
  • 2014-02-13
  • 2014-02-16
  • 2023-03-04
  • 2017-05-20
相关资源
最近更新 更多