SpringMVC和jquery产生415错误

SpringMVC和jquery产生415错误,jquery,spring,spring-mvc,Jquery,Spring,Spring Mvc,我有以下jquery <script> var response = ''; $.ajax({ type: "POST", url: "http://localhost:8080/hsv06/checkUserExists", async: false, data: "title=foo", success : function(text) { response = text; } }); c

我有以下jquery

<script>
var response = '';
$.ajax({ type: "POST",   
     url: "http://localhost:8080/hsv06/checkUserExists",   
     async: false,
     data: "title=foo",
     success : function(text)
     {
         response = text;
     }
});

console.log(response);
</script> 
但是,这会产生以下错误:

POST http://localhost:8080/hsv06/checkUserExists 415 (Unsupported Media Type)
 send @ jquery.min.js:2
ajax @ jquery.min.js:2
(anonymous) @ (index):57

有什么问题?我发送数据的方式有什么问题

415表示不支持的媒体类型。服务器使用application/json,所以客户端必须提供application/json数据。要修复它,只需将类型添加到jquery中,如下所示

$.ajax({ type: "POST",   
     url: "http://localhost:8080/hsv06/checkUserExists",   
     async: false,
     data: JSON.stringify({title: "food"}),
     // specifying data type
     contentType: "application/json; charset=utf-8",
     success : function(text)
     {
         response = text;
     }
});
contentType(默认值:'application/x-www-form-urlencoded; 字符集=UTF-8')

向服务器发送数据时,请使用此内容类型。默认为 “应用程序/x-www-form-urlencoded;字符集=UTF-8”

您的SpringREST后端应该如下所示。由于post数据是{title:“food”},Spring将把它解析成一个映射

@RequestMapping(value="/checkUserExists", method=RequestMethod.POST, consumes="application/json")
public @ResponseBody boolean checkUser(@RequestBody Map<String, String> param){
    System.out.println(param);
    return true;        
}
@RequestMapping(value=“/checkUserExists”,method=RequestMethod.POST,consumes=“application/json”)
public@ResponseBody布尔checkUser(@RequestBody-Map-param){
系统输出打印项次(参数);
返回true;
}

ok,您的数据应该是json格式。但在您的代码中,是数据:“title=foo”,而不是。你到底想发布什么?我已经更新了我的答案,请查看。基于您想发布字符串“title=foo”的假设。是的,我想发布json,我应用了您的更改,但仍然存在相同的错误,直到我怀疑数据类型。你可以试试{title:foo}。我已经更新了,你可以试试代码。我已经测试了locallys,直到出现同样的错误,你能发布你的jquery和控制器吗?我在jquery上的“utf-8”后面加了一个逗号
@RequestMapping(value="/checkUserExists", method=RequestMethod.POST, consumes="application/json")
public @ResponseBody boolean checkUser(@RequestBody Map<String, String> param){
    System.out.println(param);
    return true;        
}