弹簧控制器+;Ajax返回字符串

弹簧控制器+;Ajax返回字符串,ajax,spring,model-view-controller,controller,Ajax,Spring,Model View Controller,Controller,我想将字符串从springmvc控制器返回到Ajax。 它未按预期工作,并出现错误 我的Ajax代码: function ajaxRequest(item) { $.ajax({ type: "POST", url: "/myPage", data: { item: item }, success: function (html) { alert(html);

我想将字符串从
springmvc控制器
返回到
Ajax
。 它未按预期工作,并出现错误

我的Ajax代码:

function ajaxRequest(item) {

    $.ajax({
        type: "POST",
        url: "/myPage",
        data: {
           item: item
        },
        success: function (html) {

            alert(html);
        },
        error: function(e) {
            console.log("Error:" + e);
        }
    });

}
我的控制器:

@RequestMapping(value = "/myPage", method= RequestMethod.POST, produces="text/plain")
public @ResponseBody String myController(HttpServletRequest request) {
String myItem = request.getParameter("item");   

...

return myItem + "bla bla bla";
}
Chrome控制台结果:

POST http://localhost:8080/myPage 406 (Not Acceptable) jquery.js
Error:[object XMLHttpRequest] 

我在这里遗漏了什么?

确保你有杰克逊的依赖关系。Spring MVC可以依赖它。

我已经解决了它。我们可以使用response writer返回正确的值

    @RequestMapping(value = "/myPage")
    public void myController(HttpServletRequest request, HttpServletResponse response) throws IOException {

    String myItem = request.getParameter("item");   

    ...

    response.getWriter().println(myItem + "bla bla bla");
    }

当您从带有
@ResponseBody
注释的处理程序方法返回
字符串时,Spring将使用
StringHttpMessageConverter
,它将返回内容类型设置为
text/plain
。但是,您的请求没有该内容类型的
Accept
标题,因此服务器(您的Spring应用程序)认为返回
text/plain
是不可接受的


更改ajax以添加
text/plain

Accept
标题,此处不涉及Jackson。